l3lab/ntp-mathlib huggingface dataset:
@[to_additive (attr := simp)]
lemma measure_mul_closure_one (s : Set G) (μ : Measure G) :
    μ (s * (closure {1} : Set G)) = μ s := by
  

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : TopologicalSpace G
inst✝³ : BorelSpace G
μ✝ : Measure G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : IsMulLeftInvariant μ✝
s : Set G
μ : Measure G
⊢ ↑↑μ (s * closure {1}) = ↑↑μ s

Next tactic:
apply le_antisymm ?_ (measure_mono (subset_mul_closure_one s))
@[to_additive (attr := simp)]
lemma measure_mul_closure_one (s : Set G) (μ : Measure G) :
    μ (s * (closure {1} : Set G)) = μ s := by
  apply le_antisymm ?_ (measure_mono (subset_mul_closure_one s))
  

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : TopologicalSpace G
inst✝³ : BorelSpace G
μ✝ : Measure G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : IsMulLeftInvariant μ✝
s : Set G
μ : Measure G
⊢ ↑↑μ (s * closure {1}) ≤ ↑↑μ s

Next tactic:
conv_rhs => rw [measure_eq_iInf]
@[to_additive (attr := simp)]
lemma measure_mul_closure_one (s : Set G) (μ : Measure G) :
    μ (s * (closure {1} : Set G)) = μ s := by
  apply le_antisymm ?_ (measure_mono (subset_mul_closure_one s))
  conv_rhs => 

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : TopologicalSpace G
inst✝³ : BorelSpace G
μ✝ : Measure G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : IsMulLeftInvariant μ✝
s : Set G
μ : Measure G
| ↑↑μ s

Next tactic:
rw [measure_eq_iInf]
@[to_additive (attr := simp)]
lemma measure_mul_closure_one (s : Set G) (μ : Measure G) :
    μ (s * (closure {1} : Set G)) = μ s := by
  apply le_antisymm ?_ (measure_mono (subset_mul_closure_one s))
  conv_rhs => rw [measure_eq_iInf]
  

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : TopologicalSpace G
inst✝³ : BorelSpace G
μ✝ : Measure G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : IsMulLeftInvariant μ✝
s : Set G
μ : Measure G
⊢ ↑↑μ (s * closure {1}) ≤ ⨅ t, ⨅ (_ : s ⊆ t), ⨅ (_ : MeasurableSet t), ↑↑μ t

Next tactic:
simp only [le_iInf_iff]
@[to_additive (attr := simp)]
lemma measure_mul_closure_one (s : Set G) (μ : Measure G) :
    μ (s * (closure {1} : Set G)) = μ s := by
  apply le_antisymm ?_ (measure_mono (subset_mul_closure_one s))
  conv_rhs => rw [measure_eq_iInf]
  simp only [le_iInf_iff]
  

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : TopologicalSpace G
inst✝³ : BorelSpace G
μ✝ : Measure G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : IsMulLeftInvariant μ✝
s : Set G
μ : Measure G
⊢ ∀ (i : Set G), s ⊆ i → MeasurableSet i → ↑↑μ (s * closure {1}) ≤ ↑↑μ i

Next tactic:
intro t kt t_meas
@[to_additive (attr := simp)]
lemma measure_mul_closure_one (s : Set G) (μ : Measure G) :
    μ (s * (closure {1} : Set G)) = μ s := by
  apply le_antisymm ?_ (measure_mono (subset_mul_closure_one s))
  conv_rhs => rw [measure_eq_iInf]
  simp only [le_iInf_iff]
  intro t kt t_meas
  

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : TopologicalSpace G
inst✝³ : BorelSpace G
μ✝ : Measure G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : IsMulLeftInvariant μ✝
s : Set G
μ : Measure G
t : Set G
kt : s ⊆ t
t_meas : MeasurableSet t
⊢ ↑↑μ (s * closure {1}) ≤ ↑↑μ t

Next tactic:
apply measure_mono
@[to_additive (attr := simp)]
lemma measure_mul_closure_one (s : Set G) (μ : Measure G) :
    μ (s * (closure {1} : Set G)) = μ s := by
  apply le_antisymm ?_ (measure_mono (subset_mul_closure_one s))
  conv_rhs => rw [measure_eq_iInf]
  simp only [le_iInf_iff]
  intro t kt t_meas
  apply measure_mono
  

Proof state:
case h
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : TopologicalSpace G
inst✝³ : BorelSpace G
μ✝ : Measure G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : IsMulLeftInvariant μ✝
s : Set G
μ : Measure G
t : Set G
kt : s ⊆ t
t_meas : MeasurableSet t
⊢ s * closure {1} ⊆ t

Next tactic:
rw [← t_meas.mul_closure_one_eq]
@[to_additive (attr := simp)]
lemma measure_mul_closure_one (s : Set G) (μ : Measure G) :
    μ (s * (closure {1} : Set G)) = μ s := by
  apply le_antisymm ?_ (measure_mono (subset_mul_closure_one s))
  conv_rhs => rw [measure_eq_iInf]
  simp only [le_iInf_iff]
  intro t kt t_meas
  apply measure_mono
  rw [← t_meas.mul_closure_one_eq]
  

Proof state:
case h
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : TopologicalSpace G
inst✝³ : BorelSpace G
μ✝ : Measure G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : IsMulLeftInvariant μ✝
s : Set G
μ : Measure G
t : Set G
kt : s ⊆ t
t_meas : MeasurableSet t
⊢ s * closure {1} ⊆ t * closure {1}

Next tactic:
exact smul_subset_smul_right kt
@[to_additive]
lemma _root_.IsCompact.measure_closure_eq_of_group {k : Set G} (hk : IsCompact k) (μ : Measure G) :
    μ (closure k) = μ k := by
  

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : TopologicalSpace G
inst✝³ : BorelSpace G
μ✝ : Measure G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : IsMulLeftInvariant μ✝
k : Set G
hk : IsCompact k
μ : Measure G
⊢ ↑↑μ (closure k) = ↑↑μ k

Next tactic:
rw [← hk.mul_closure_one_eq_closure, measure_mul_closure_one]
/-- In an abelian group every left invariant measure is also right-invariant.
  We don't declare the converse as an instance, since that would loop type-class inference, and
  we use `IsMulLeftInvariant` as the default hypothesis in abelian groups. -/
@[to_additive IsAddLeftInvariant.isAddRightInvariant
"In an abelian additive group every left invariant measure is also right-invariant. We don't declare
the converse as an instance, since that would loop type-class inference, and we use
`IsAddLeftInvariant` as the default hypothesis in abelian groups."]
instance (priority := 100) IsMulLeftInvariant.isMulRightInvariant {μ : Measure G}
    [IsMulLeftInvariant μ] : IsMulRightInvariant μ :=
  ⟨fun g => by 

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : CommSemigroup G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
g : G
⊢ Measure.map (fun x => x * g) μ = μ

Next tactic:
simp_rw [mul_comm, map_mul_left_eq_self]
example [TopologicalGroup G] [LocallyCompactSpace G] [SecondCountableTopology G] [BorelSpace G] :
    Regular μ := by 

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁸ : MeasurableSpace G
inst✝⁷ : MeasurableSpace H
inst✝⁶ : Group G
inst✝⁵ : TopologicalSpace G
μ : Measure G
inst✝⁴ : IsHaarMeasure μ
inst✝³ : TopologicalGroup G
inst✝² : LocallyCompactSpace G
inst✝¹ : SecondCountableTopology G
inst✝ : BorelSpace G
⊢ Regular μ

Next tactic:
infer_instance
example [TopologicalGroup G] [LocallyCompactSpace G] [SecondCountableTopology G] [BorelSpace G] :
    InnerRegular μ := by 

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁸ : MeasurableSpace G
inst✝⁷ : MeasurableSpace H
inst✝⁶ : Group G
inst✝⁵ : TopologicalSpace G
μ : Measure G
inst✝⁴ : IsHaarMeasure μ
inst✝³ : TopologicalGroup G
inst✝² : LocallyCompactSpace G
inst✝¹ : SecondCountableTopology G
inst✝ : BorelSpace G
⊢ InnerRegular μ

Next tactic:
infer_instance
@[to_additive (attr := simp)]
theorem haar_singleton [TopologicalGroup G] [BorelSpace G] (g : G) : μ {g} = μ {(1 : G)} := by
  

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : Group G
inst✝³ : TopologicalSpace G
μ : Measure G
inst✝² : IsHaarMeasure μ
inst✝¹ : TopologicalGroup G
inst✝ : BorelSpace G
g : G
⊢ ↑↑μ {g} = ↑↑μ {1}

Next tactic:
convert measure_preimage_mul μ g⁻¹ _
@[to_additive (attr := simp)]
theorem haar_singleton [TopologicalGroup G] [BorelSpace G] (g : G) : μ {g} = μ {(1 : G)} := by
  convert measure_preimage_mul μ g⁻¹ _
  

Proof state:
case h.e'_2.h.e'_3
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : Group G
inst✝³ : TopologicalSpace G
μ : Measure G
inst✝² : IsHaarMeasure μ
inst✝¹ : TopologicalGroup G
inst✝ : BorelSpace G
g : G
⊢ {g} = (fun h => g⁻¹ * h) ⁻¹' {1}

Next tactic:
simp only [mul_one, preimage_mul_left_singleton, inv_inv]
/-- The image of a Haar measure under a continuous surjective proper group homomorphism is again
a Haar measure. See also `MulEquiv.isHaarMeasure_map`. -/
@[to_additive
"The image of an additive Haar measure under a continuous surjective proper additive group
homomorphism is again an additive Haar measure. See also `AddEquiv.isAddHaarMeasure_map`."]
theorem isHaarMeasure_map [BorelSpace G] [TopologicalGroup G] {H : Type*} [Group H]
    [TopologicalSpace H] [MeasurableSpace H] [BorelSpace H] [T2Space H] [TopologicalGroup H]
    (f : G →* H) (hf : Continuous f) (h_surj : Surjective f)
    (h_prop : Tendsto f (cocompact G) (cocompact H)) : IsHaarMeasure (Measure.map f μ) :=
  { toIsMulLeftInvariant := isMulLeftInvariant_map f.toMulHom hf.measurable h_surj
    lt_top_of_isCompact := by
      

Proof state:
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝¹² : MeasurableSpace G
inst✝¹¹ : MeasurableSpace H✝
inst✝¹⁰ : Group G
inst✝⁹ : TopologicalSpace G
μ : Measure G
inst✝⁸ : IsHaarMeasure μ
inst✝⁷ : BorelSpace G
inst✝⁶ : TopologicalGroup G
H : Type u_4
inst✝⁵ : Group H
inst✝⁴ : TopologicalSpace H
inst✝³ : MeasurableSpace H
inst✝² : BorelSpace H
inst✝¹ : T2Space H
inst✝ : TopologicalGroup H
f : G →* H
hf : Continuous ⇑f
h_surj : Surjective ⇑f
h_prop : Tendsto (⇑f) (cocompact G) (cocompact H)
⊢ ∀ ⦃K : Set H⦄, IsCompact K → ↑↑(map (⇑f) μ) K < ⊤

Next tactic:
intro K hK
/-- The image of a Haar measure under a continuous surjective proper group homomorphism is again
a Haar measure. See also `MulEquiv.isHaarMeasure_map`. -/
@[to_additive
"The image of an additive Haar measure under a continuous surjective proper additive group
homomorphism is again an additive Haar measure. See also `AddEquiv.isAddHaarMeasure_map`."]
theorem isHaarMeasure_map [BorelSpace G] [TopologicalGroup G] {H : Type*} [Group H]
    [TopologicalSpace H] [MeasurableSpace H] [BorelSpace H] [T2Space H] [TopologicalGroup H]
    (f : G →* H) (hf : Continuous f) (h_surj : Surjective f)
    (h_prop : Tendsto f (cocompact G) (cocompact H)) : IsHaarMeasure (Measure.map f μ) :=
  { toIsMulLeftInvariant := isMulLeftInvariant_map f.toMulHom hf.measurable h_surj
    lt_top_of_isCompact := by
      intro K hK
      

Proof state:
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝¹² : MeasurableSpace G
inst✝¹¹ : MeasurableSpace H✝
inst✝¹⁰ : Group G
inst✝⁹ : TopologicalSpace G
μ : Measure G
inst✝⁸ : IsHaarMeasure μ
inst✝⁷ : BorelSpace G
inst✝⁶ : TopologicalGroup G
H : Type u_4
inst✝⁵ : Group H
inst✝⁴ : TopologicalSpace H
inst✝³ : MeasurableSpace H
inst✝² : BorelSpace H
inst✝¹ : T2Space H
inst✝ : TopologicalGroup H
f : G →* H
hf : Continuous ⇑f
h_surj : Surjective ⇑f
h_prop : Tendsto (⇑f) (cocompact G) (cocompact H)
K : Set H
hK : IsCompact K
⊢ ↑↑(map (⇑f) μ) K < ⊤

Next tactic:
rw [map_apply hf.measurable hK.measurableSet]
/-- The image of a Haar measure under a continuous surjective proper group homomorphism is again
a Haar measure. See also `MulEquiv.isHaarMeasure_map`. -/
@[to_additive
"The image of an additive Haar measure under a continuous surjective proper additive group
homomorphism is again an additive Haar measure. See also `AddEquiv.isAddHaarMeasure_map`."]
theorem isHaarMeasure_map [BorelSpace G] [TopologicalGroup G] {H : Type*} [Group H]
    [TopologicalSpace H] [MeasurableSpace H] [BorelSpace H] [T2Space H] [TopologicalGroup H]
    (f : G →* H) (hf : Continuous f) (h_surj : Surjective f)
    (h_prop : Tendsto f (cocompact G) (cocompact H)) : IsHaarMeasure (Measure.map f μ) :=
  { toIsMulLeftInvariant := isMulLeftInvariant_map f.toMulHom hf.measurable h_surj
    lt_top_of_isCompact := by
      intro K hK
      rw [map_apply hf.measurable hK.measurableSet]
      

Proof state:
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝¹² : MeasurableSpace G
inst✝¹¹ : MeasurableSpace H✝
inst✝¹⁰ : Group G
inst✝⁹ : TopologicalSpace G
μ : Measure G
inst✝⁸ : IsHaarMeasure μ
inst✝⁷ : BorelSpace G
inst✝⁶ : TopologicalGroup G
H : Type u_4
inst✝⁵ : Group H
inst✝⁴ : TopologicalSpace H
inst✝³ : MeasurableSpace H
inst✝² : BorelSpace H
inst✝¹ : T2Space H
inst✝ : TopologicalGroup H
f : G →* H
hf : Continuous ⇑f
h_surj : Surjective ⇑f
h_prop : Tendsto (⇑f) (cocompact G) (cocompact H)
K : Set H
hK : IsCompact K
⊢ ↑↑μ (⇑f ⁻¹' K) < ⊤

Next tactic:
exact IsCompact.measure_lt_top ((⟨⟨f, hf⟩, h_prop⟩ : CocompactMap G H).isCompact_preimage hK)
/-- The image of a Haar measure under map of a left action is again a Haar measure. -/
@[to_additive
   "The image of a Haar measure under map of a left additive action is again a Haar measure"]
instance isHaarMeasure_map_smul {α} [BorelSpace G] [TopologicalGroup G]
    [Group α] [MulAction α G] [SMulCommClass α G G] [MeasurableSpace α] [MeasurableSMul α G]
    [ContinuousConstSMul α G] (a : α) : IsHaarMeasure (Measure.map (a • · : G → G) μ) where
  toIsMulLeftInvariant := isMulLeftInvariant_map_smul _
  lt_top_of_isCompact K hK := by
    

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝¹² : MeasurableSpace G
inst✝¹¹ : MeasurableSpace H
inst✝¹⁰ : Group G
inst✝⁹ : TopologicalSpace G
μ : Measure G
inst✝⁸ : IsHaarMeasure μ
α : Type ?u.1418551
inst✝⁷ : BorelSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : Group α
inst✝⁴ : MulAction α G
inst✝³ : SMulCommClass α G G
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSMul α G
inst✝ : ContinuousConstSMul α G
a : α
K : Set G
hK : IsCompact K
⊢ ↑↑(map (fun x => a • x) μ) K < ⊤

Next tactic:
let F := (Homeomorph.smul a (α := G)).toMeasurableEquiv
/-- The image of a Haar measure under map of a left action is again a Haar measure. -/
@[to_additive
   "The image of a Haar measure under map of a left additive action is again a Haar measure"]
instance isHaarMeasure_map_smul {α} [BorelSpace G] [TopologicalGroup G]
    [Group α] [MulAction α G] [SMulCommClass α G G] [MeasurableSpace α] [MeasurableSMul α G]
    [ContinuousConstSMul α G] (a : α) : IsHaarMeasure (Measure.map (a • · : G → G) μ) where
  toIsMulLeftInvariant := isMulLeftInvariant_map_smul _
  lt_top_of_isCompact K hK := by
    let F := (Homeomorph.smul a (α := G)).toMeasurableEquiv
    

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝¹² : MeasurableSpace G
inst✝¹¹ : MeasurableSpace H
inst✝¹⁰ : Group G
inst✝⁹ : TopologicalSpace G
μ : Measure G
inst✝⁸ : IsHaarMeasure μ
α : Type ?u.1418551
inst✝⁷ : BorelSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : Group α
inst✝⁴ : MulAction α G
inst✝³ : SMulCommClass α G G
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSMul α G
inst✝ : ContinuousConstSMul α G
a : α
K : Set G
hK : IsCompact K
F : G ≃ᵐ G := Homeomorph.toMeasurableEquiv (Homeomorph.smul a)
⊢ ↑↑(map (fun x => a • x) μ) K < ⊤

Next tactic:
change map F μ K < ∞
/-- The image of a Haar measure under map of a left action is again a Haar measure. -/
@[to_additive
   "The image of a Haar measure under map of a left additive action is again a Haar measure"]
instance isHaarMeasure_map_smul {α} [BorelSpace G] [TopologicalGroup G]
    [Group α] [MulAction α G] [SMulCommClass α G G] [MeasurableSpace α] [MeasurableSMul α G]
    [ContinuousConstSMul α G] (a : α) : IsHaarMeasure (Measure.map (a • · : G → G) μ) where
  toIsMulLeftInvariant := isMulLeftInvariant_map_smul _
  lt_top_of_isCompact K hK := by
    let F := (Homeomorph.smul a (α := G)).toMeasurableEquiv
    change map F μ K < ∞
    

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝¹² : MeasurableSpace G
inst✝¹¹ : MeasurableSpace H
inst✝¹⁰ : Group G
inst✝⁹ : TopologicalSpace G
μ : Measure G
inst✝⁸ : IsHaarMeasure μ
α : Type ?u.1418551
inst✝⁷ : BorelSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : Group α
inst✝⁴ : MulAction α G
inst✝³ : SMulCommClass α G G
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSMul α G
inst✝ : ContinuousConstSMul α G
a : α
K : Set G
hK : IsCompact K
F : G ≃ᵐ G := Homeomorph.toMeasurableEquiv (Homeomorph.smul a)
⊢ ↑↑(map (⇑F) μ) K < ⊤

Next tactic:
rw [F.map_apply K]
/-- The image of a Haar measure under map of a left action is again a Haar measure. -/
@[to_additive
   "The image of a Haar measure under map of a left additive action is again a Haar measure"]
instance isHaarMeasure_map_smul {α} [BorelSpace G] [TopologicalGroup G]
    [Group α] [MulAction α G] [SMulCommClass α G G] [MeasurableSpace α] [MeasurableSMul α G]
    [ContinuousConstSMul α G] (a : α) : IsHaarMeasure (Measure.map (a • · : G → G) μ) where
  toIsMulLeftInvariant := isMulLeftInvariant_map_smul _
  lt_top_of_isCompact K hK := by
    let F := (Homeomorph.smul a (α := G)).toMeasurableEquiv
    change map F μ K < ∞
    rw [F.map_apply K]
    

Proof state:
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝¹² : MeasurableSpace G
inst✝¹¹ : MeasurableSpace H
inst✝¹⁰ : Group G
inst✝⁹ : TopologicalSpace G
μ : Measure G
inst✝⁸ : IsHaarMeasure μ
α : Type ?u.1418551
inst✝⁷ : BorelSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : Group α
inst✝⁴ : MulAction α G
inst✝³ : SMulCommClass α G G
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSMul α G
inst✝ : ContinuousConstSMul α G
a : α
K : Set G
hK : IsCompact K
F : G ≃ᵐ G := Homeomorph.toMeasurableEquiv (Homeomorph.smul a)
⊢ ↑↑μ (⇑F ⁻¹' K) < ⊤

Next tactic:
exact IsCompact.measure_lt_top <| (Homeomorph.isCompact_preimage (Homeomorph.smul a)).2 hK
/-- A convenience wrapper for `MeasureTheory.Measure.isHaarMeasure_map`. -/
@[to_additive "A convenience wrapper for `MeasureTheory.Measure.isAddHaarMeasure_map`."]
nonrec theorem _root_.MulEquiv.isHaarMeasure_map [BorelSpace G] [TopologicalGroup G] {H : Type*}
    [Group H] [TopologicalSpace H] [MeasurableSpace H] [BorelSpace H]
    [TopologicalGroup H] (e : G ≃* H) (he : Continuous e) (hesymm : Continuous e.symm) :
    IsHaarMeasure (Measure.map e μ) :=
  { toIsMulLeftInvariant := isMulLeftInvariant_map e.toMulHom he.measurable e.surjective
    lt_top_of_isCompact := by
      

Proof state:
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : MeasurableSpace H✝
inst✝⁹ : Group G
inst✝⁸ : TopologicalSpace G
μ : Measure G
inst✝⁷ : IsHaarMeasure μ
inst✝⁶ : BorelSpace G
inst✝⁵ : TopologicalGroup G
H : Type u_4
inst✝⁴ : Group H
inst✝³ : TopologicalSpace H
inst✝² : MeasurableSpace H
inst✝¹ : BorelSpace H
inst✝ : TopologicalGroup H
e : G ≃* H
he : Continuous ⇑e
hesymm : Continuous ⇑(MulEquiv.symm e)
⊢ ∀ ⦃K : Set H⦄, IsCompact K → ↑↑(map (⇑e) μ) K < ⊤

Next tactic:
intro K hK
/-- A convenience wrapper for `MeasureTheory.Measure.isHaarMeasure_map`. -/
@[to_additive "A convenience wrapper for `MeasureTheory.Measure.isAddHaarMeasure_map`."]
nonrec theorem _root_.MulEquiv.isHaarMeasure_map [BorelSpace G] [TopologicalGroup G] {H : Type*}
    [Group H] [TopologicalSpace H] [MeasurableSpace H] [BorelSpace H]
    [TopologicalGroup H] (e : G ≃* H) (he : Continuous e) (hesymm : Continuous e.symm) :
    IsHaarMeasure (Measure.map e μ) :=
  { toIsMulLeftInvariant := isMulLeftInvariant_map e.toMulHom he.measurable e.surjective
    lt_top_of_isCompact := by
      intro K hK
      

Proof state:
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : MeasurableSpace H✝
inst✝⁹ : Group G
inst✝⁸ : TopologicalSpace G
μ : Measure G
inst✝⁷ : IsHaarMeasure μ
inst✝⁶ : BorelSpace G
inst✝⁵ : TopologicalGroup G
H : Type u_4
inst✝⁴ : Group H
inst✝³ : TopologicalSpace H
inst✝² : MeasurableSpace H
inst✝¹ : BorelSpace H
inst✝ : TopologicalGroup H
e : G ≃* H
he : Continuous ⇑e
hesymm : Continuous ⇑(MulEquiv.symm e)
K : Set H
hK : IsCompact K
⊢ ↑↑(map (⇑e) μ) K < ⊤

Next tactic:
let F : G ≃ₜ H := {
        e.toEquiv with
        continuous_toFun := he
        continuous_invFun := hesymm }
/-- A convenience wrapper for `MeasureTheory.Measure.isHaarMeasure_map`. -/
@[to_additive "A convenience wrapper for `MeasureTheory.Measure.isAddHaarMeasure_map`."]
nonrec theorem _root_.MulEquiv.isHaarMeasure_map [BorelSpace G] [TopologicalGroup G] {H : Type*}
    [Group H] [TopologicalSpace H] [MeasurableSpace H] [BorelSpace H]
    [TopologicalGroup H] (e : G ≃* H) (he : Continuous e) (hesymm : Continuous e.symm) :
    IsHaarMeasure (Measure.map e μ) :=
  { toIsMulLeftInvariant := isMulLeftInvariant_map e.toMulHom he.measurable e.surjective
    lt_top_of_isCompact := by
      intro K hK
      let F : G ≃ₜ H := {
        e.toEquiv with
        continuous_toFun := he
        continuous_invFun := hesymm }
      

Proof state:
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : MeasurableSpace H✝
inst✝⁹ : Group G
inst✝⁸ : TopologicalSpace G
μ : Measure G
inst✝⁷ : IsHaarMeasure μ
inst✝⁶ : BorelSpace G
inst✝⁵ : TopologicalGroup G
H : Type u_4
inst✝⁴ : Group H
inst✝³ : TopologicalSpace H
inst✝² : MeasurableSpace H
inst✝¹ : BorelSpace H
inst✝ : TopologicalGroup H
e : G ≃* H
he : Continuous ⇑e
hesymm : Continuous ⇑(MulEquiv.symm e)
K : Set H
hK : IsCompact K
F : G ≃ₜ H :=
  let src := e.toEquiv;
  Homeomorph.mk
    { toFun := src.toFun, invFun := src.invFun, left_inv := (_ : LeftInverse src.invFun src.toFun),
      right_inv := (_ : Function.RightInverse src.invFun src.toFun) }
⊢ ↑↑(map (⇑e) μ) K < ⊤

Next tactic:
change map F.toMeasurableEquiv μ K < ∞
/-- A convenience wrapper for `MeasureTheory.Measure.isHaarMeasure_map`. -/
@[to_additive "A convenience wrapper for `MeasureTheory.Measure.isAddHaarMeasure_map`."]
nonrec theorem _root_.MulEquiv.isHaarMeasure_map [BorelSpace G] [TopologicalGroup G] {H : Type*}
    [Group H] [TopologicalSpace H] [MeasurableSpace H] [BorelSpace H]
    [TopologicalGroup H] (e : G ≃* H) (he : Continuous e) (hesymm : Continuous e.symm) :
    IsHaarMeasure (Measure.map e μ) :=
  { toIsMulLeftInvariant := isMulLeftInvariant_map e.toMulHom he.measurable e.surjective
    lt_top_of_isCompact := by
      intro K hK
      let F : G ≃ₜ H := {
        e.toEquiv with
        continuous_toFun := he
        continuous_invFun := hesymm }
      change map F.toMeasurableEquiv μ K < ∞
      

Proof state:
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : MeasurableSpace H✝
inst✝⁹ : Group G
inst✝⁸ : TopologicalSpace G
μ : Measure G
inst✝⁷ : IsHaarMeasure μ
inst✝⁶ : BorelSpace G
inst✝⁵ : TopologicalGroup G
H : Type u_4
inst✝⁴ : Group H
inst✝³ : TopologicalSpace H
inst✝² : MeasurableSpace H
inst✝¹ : BorelSpace H
inst✝ : TopologicalGroup H
e : G ≃* H
he : Continuous ⇑e
hesymm : Continuous ⇑(MulEquiv.symm e)
K : Set H
hK : IsCompact K
F : G ≃ₜ H :=
  let src := e.toEquiv;
  Homeomorph.mk
    { toFun := src.toFun, invFun := src.invFun, left_inv := (_ : LeftInverse src.invFun src.toFun),
      right_inv := (_ : Function.RightInverse src.invFun src.toFun) }
⊢ ↑↑(map (⇑(Homeomorph.toMeasurableEquiv F)) μ) K < ⊤

Next tactic:
rw [F.toMeasurableEquiv.map_apply K]