[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
c : ℝ≥0∞
g : G
⊢ Measure.map (fun x => g * x) (c • μ) = c • μ
[PROOFSTEP]
rw [Measure.map_smul, map_mul_left_eq_self]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
c : ℝ≥0∞
g : G
⊢ Measure.map (fun x => x * g) (c • μ) = c • μ
[PROOFSTEP]
rw [Measure.map_smul, map_mul_right_eq_self]
[GOAL]
𝕜 : Type u_1
G✝ : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G✝
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G✝
μ✝ : Measure G✝
inst✝⁴ : MeasurableMul G✝
G : Type u_4
α : Type u_5
inst✝³ : Group G
inst✝² : MulAction G α
inst✝¹ : MeasurableSpace α
μ : Measure α
inst✝ : SMulInvariantMeasure G α μ
H : Subgroup G
y : { x // x ∈ H }
s : Set α
hs : MeasurableSet s
⊢ ↑↑μ ((fun x => y • x) ⁻¹' s) = ↑↑μ s
[PROOFSTEP]
convert SMulInvariantMeasure.measure_preimage_smul (μ := μ) (y : G) hs
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
⊢ (∀ (g : G) (A : Set G), MeasurableSet A → ↑↑μ ((fun h => g * h) ⁻¹' A) = ↑↑μ A) ↔ IsMulLeftInvariant μ
[PROOFSTEP]
trans ∀ g, map (g * ·) μ = μ
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
⊢ (∀ (g : G) (A : Set G), MeasurableSet A → ↑↑μ ((fun h => g * h) ⁻¹' A) = ↑↑μ A) ↔
    ∀ (g : G), Measure.map (fun x => g * x) μ = μ
[PROOFSTEP]
simp_rw [Measure.ext_iff]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
⊢ (∀ (g : G) (A : Set G), MeasurableSet A → ↑↑μ ((fun h => g * h) ⁻¹' A) = ↑↑μ A) ↔
    ∀ (g : G) (s : Set G), MeasurableSet s → ↑↑(Measure.map (fun x => g * x) μ) s = ↑↑μ s
[PROOFSTEP]
refine' forall_congr' fun g => forall_congr' fun A => forall_congr' fun hA => _
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
g : G
A : Set G
hA : MeasurableSet A
⊢ ↑↑μ ((fun h => g * h) ⁻¹' A) = ↑↑μ A ↔ ↑↑(Measure.map (fun x => g * x) μ) A = ↑↑μ A
[PROOFSTEP]
rw [map_apply (measurable_const_mul g) hA]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
⊢ (∀ (g : G), Measure.map (fun x => g * x) μ = μ) ↔ IsMulLeftInvariant μ
[PROOFSTEP]
exact ⟨fun h => ⟨h⟩, fun h => h.1⟩
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
⊢ (∀ (g : G) (A : Set G), MeasurableSet A → ↑↑μ ((fun h => h * g) ⁻¹' A) = ↑↑μ A) ↔ IsMulRightInvariant μ
[PROOFSTEP]
trans ∀ g, map (· * g) μ = μ
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
⊢ (∀ (g : G) (A : Set G), MeasurableSet A → ↑↑μ ((fun h => h * g) ⁻¹' A) = ↑↑μ A) ↔
    ∀ (g : G), Measure.map (fun x => x * g) μ = μ
[PROOFSTEP]
simp_rw [Measure.ext_iff]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
⊢ (∀ (g : G) (A : Set G), MeasurableSet A → ↑↑μ ((fun h => h * g) ⁻¹' A) = ↑↑μ A) ↔
    ∀ (g : G) (s : Set G), MeasurableSet s → ↑↑(Measure.map (fun x => x * g) μ) s = ↑↑μ s
[PROOFSTEP]
refine' forall_congr' fun g => forall_congr' fun A => forall_congr' fun hA => _
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
g : G
A : Set G
hA : MeasurableSet A
⊢ ↑↑μ ((fun h => h * g) ⁻¹' A) = ↑↑μ A ↔ ↑↑(Measure.map (fun x => x * g) μ) A = ↑↑μ A
[PROOFSTEP]
rw [map_apply (measurable_mul_const g) hA]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
⊢ (∀ (g : G), Measure.map (fun x => x * g) μ = μ) ↔ IsMulRightInvariant μ
[PROOFSTEP]
exact ⟨fun h => ⟨h⟩, fun h => h.1⟩
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulLeftInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulLeftInvariant ν
inst✝ : SigmaFinite ν
⊢ IsMulLeftInvariant (Measure.prod μ ν)
[PROOFSTEP]
constructor
[GOAL]
case map_mul_left_eq_self
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulLeftInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulLeftInvariant ν
inst✝ : SigmaFinite ν
⊢ ∀ (g : G × H), map (fun x => g * x) (Measure.prod μ ν) = Measure.prod μ ν
[PROOFSTEP]
rintro ⟨g, h⟩
[GOAL]
case map_mul_left_eq_self.mk
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulLeftInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulLeftInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ map (fun x => (g, h) * x) (Measure.prod μ ν) = Measure.prod μ ν
[PROOFSTEP]
change map (Prod.map (g * ·) (h * ·)) (μ.prod ν) = μ.prod ν
[GOAL]
case map_mul_left_eq_self.mk
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulLeftInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulLeftInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ map (Prod.map (fun x => g * x) fun x => h * x) (Measure.prod μ ν) = Measure.prod μ ν
[PROOFSTEP]
rw [← map_prod_map _ _ (measurable_const_mul g) (measurable_const_mul h), map_mul_left_eq_self μ g,
  map_mul_left_eq_self ν h]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulLeftInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulLeftInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ SigmaFinite (map (fun x => g * x) μ)
[PROOFSTEP]
rw [map_mul_left_eq_self μ g]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulLeftInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulLeftInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ SigmaFinite μ
[PROOFSTEP]
infer_instance
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulLeftInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulLeftInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ SigmaFinite (map (fun x => h * x) ν)
[PROOFSTEP]
rw [map_mul_left_eq_self ν h]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulLeftInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulLeftInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ SigmaFinite ν
[PROOFSTEP]
infer_instance
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulRightInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulRightInvariant ν
inst✝ : SigmaFinite ν
⊢ IsMulRightInvariant (Measure.prod μ ν)
[PROOFSTEP]
constructor
[GOAL]
case map_mul_right_eq_self
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulRightInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulRightInvariant ν
inst✝ : SigmaFinite ν
⊢ ∀ (g : G × H), map (fun x => x * g) (Measure.prod μ ν) = Measure.prod μ ν
[PROOFSTEP]
rintro ⟨g, h⟩
[GOAL]
case map_mul_right_eq_self.mk
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulRightInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulRightInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ map (fun x => x * (g, h)) (Measure.prod μ ν) = Measure.prod μ ν
[PROOFSTEP]
change map (Prod.map (· * g) (· * h)) (μ.prod ν) = μ.prod ν
[GOAL]
case map_mul_right_eq_self.mk
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulRightInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulRightInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ map (Prod.map (fun x => x * g) fun x => x * h) (Measure.prod μ ν) = Measure.prod μ ν
[PROOFSTEP]
rw [← map_prod_map _ _ (measurable_mul_const g) (measurable_mul_const h), map_mul_right_eq_self μ g,
  map_mul_right_eq_self ν h]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulRightInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulRightInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ SigmaFinite (map (fun x => x * g) μ)
[PROOFSTEP]
rw [map_mul_right_eq_self μ g]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulRightInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulRightInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ SigmaFinite μ
[PROOFSTEP]
infer_instance
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulRightInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulRightInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ SigmaFinite (map (fun x => x * h) ν)
[PROOFSTEP]
rw [map_mul_right_eq_self ν h]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁹ : MeasurableSpace G
inst✝⁸ : MeasurableSpace H✝
inst✝⁷ : Mul G
μ : Measure G
inst✝⁶ : MeasurableMul G
inst✝⁵ : IsMulRightInvariant μ
inst✝⁴ : SigmaFinite μ
H : Type u_4
inst✝³ : Mul H
mH : MeasurableSpace H
ν : Measure H
inst✝² : MeasurableMul H
inst✝¹ : IsMulRightInvariant ν
inst✝ : SigmaFinite ν
g : G
h : H
⊢ SigmaFinite ν
[PROOFSTEP]
infer_instance
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
⊢ IsMulLeftInvariant (Measure.map (↑f) μ)
[PROOFSTEP]
refine' ⟨fun h => _⟩
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
h : H
⊢ Measure.map (fun x => h * x) (Measure.map (↑f) μ) = Measure.map (↑f) μ
[PROOFSTEP]
rw [map_map (measurable_const_mul _) hf]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
h : H
⊢ Measure.map ((fun x => h * x) ∘ ↑f) μ = Measure.map (↑f) μ
[PROOFSTEP]
obtain ⟨g, rfl⟩ := h_surj h
[GOAL]
case intro
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
g : G
⊢ Measure.map ((fun x => ↑f g * x) ∘ ↑f) μ = Measure.map (↑f) μ
[PROOFSTEP]
conv_rhs => rw [← map_mul_left_eq_self μ g]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
g : G
| Measure.map (↑f) μ
[PROOFSTEP]
rw [← map_mul_left_eq_self μ g]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
g : G
| Measure.map (↑f) μ
[PROOFSTEP]
rw [← map_mul_left_eq_self μ g]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
g : G
| Measure.map (↑f) μ
[PROOFSTEP]
rw [← map_mul_left_eq_self μ g]
[GOAL]
case intro
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
g : G
⊢ Measure.map ((fun x => ↑f g * x) ∘ ↑f) μ = Measure.map (↑f) (Measure.map (fun x => g * x) μ)
[PROOFSTEP]
rw [map_map hf (measurable_const_mul _)]
[GOAL]
case intro
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
g : G
⊢ Measure.map ((fun x => ↑f g * x) ∘ ↑f) μ = Measure.map (↑f ∘ fun x => g * x) μ
[PROOFSTEP]
congr 2
[GOAL]
case intro.e_f
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
g : G
⊢ (fun x => ↑f g * x) ∘ ↑f = ↑f ∘ fun x => g * x
[PROOFSTEP]
ext y
[GOAL]
case intro.e_f.h
𝕜 : Type u_1
G : Type u_2
H✝ : Type u_3
inst✝⁷ : MeasurableSpace G
inst✝⁶ : MeasurableSpace H✝
inst✝⁵ : Mul G
μ : Measure G
inst✝⁴ : MeasurableMul G
H : Type u_4
inst✝³ : MeasurableSpace H
inst✝² : Mul H
inst✝¹ : MeasurableMul H
inst✝ : IsMulLeftInvariant μ
f : G →ₙ* H
hf : Measurable ↑f
h_surj : Surjective ↑f
g y : G
⊢ ((fun x => ↑f g * x) ∘ ↑f) y = (↑f ∘ fun x => g * x) y
[PROOFSTEP]
simp only [comp_apply, map_mul]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : DivInvMonoid G
μ : Measure G
inst✝ : IsMulRightInvariant μ
g : G
⊢ Measure.map (fun x => x / g) μ = μ
[PROOFSTEP]
simp_rw [div_eq_mul_inv, map_mul_right_eq_self μ g⁻¹]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
g : G
⊢ MeasurePreserving fun x => x / g
[PROOFSTEP]
simp_rw [div_eq_mul_inv, measurePreserving_mul_right μ g⁻¹]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
g : G
A : Set G
⊢ ↑↑(Measure.map (fun h => g * h) μ) A = ↑↑μ A
[PROOFSTEP]
rw [map_mul_left_eq_self μ g]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
g : G
A : Set G
⊢ ↑↑(Measure.map (fun h => h * g) μ) A = ↑↑μ A
[PROOFSTEP]
rw [map_mul_right_eq_self μ g]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
t : G
p : G → Prop
⊢ (∀ᵐ (x : G) ∂μ, p (t * x)) ↔ ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
conv_rhs => rw [Filter.Eventually, ← map_mul_left_ae μ t]; rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
t : G
p : G → Prop
| ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
rw [Filter.Eventually, ← map_mul_left_ae μ t]; rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
t : G
p : G → Prop
| ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
rw [Filter.Eventually, ← map_mul_left_ae μ t]; rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
t : G
p : G → Prop
| ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
rw [Filter.Eventually, ← map_mul_left_ae μ t]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
t : G
p : G → Prop
| {x | p x} ∈ Filter.map (fun h => t * h) (ae μ)
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
t : G
p : G → Prop
⊢ (∀ᵐ (x : G) ∂μ, p (x * t)) ↔ ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
conv_rhs => rw [Filter.Eventually, ← map_mul_right_ae μ t]; rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
t : G
p : G → Prop
| ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
rw [Filter.Eventually, ← map_mul_right_ae μ t]; rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
t : G
p : G → Prop
| ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
rw [Filter.Eventually, ← map_mul_right_ae μ t]; rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
t : G
p : G → Prop
| ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
rw [Filter.Eventually, ← map_mul_right_ae μ t]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
t : G
p : G → Prop
| {x | p x} ∈ Filter.map (fun h => h * t) (ae μ)
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
t : G
p : G → Prop
⊢ (∀ᵐ (x : G) ∂μ, p (x / t)) ↔ ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
conv_rhs => rw [Filter.Eventually, ← map_div_right_ae μ t]; rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
t : G
p : G → Prop
| ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
rw [Filter.Eventually, ← map_div_right_ae μ t]; rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
t : G
p : G → Prop
| ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
rw [Filter.Eventually, ← map_div_right_ae μ t]; rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
t : G
p : G → Prop
| ∀ᵐ (x : G) ∂μ, p x
[PROOFSTEP]
rw [Filter.Eventually, ← map_div_right_ae μ t]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : IsMulRightInvariant μ
t : G
p : G → Prop
| {x | p x} ∈ Filter.map (fun t_1 => t_1 / t) (ae μ)
[PROOFSTEP]
rfl
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : InvolutiveInv G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsInvInvariant μ
A : Set G
⊢ ↑↑μ A⁻¹ = ↑↑μ A
[PROOFSTEP]
rw [← inv_apply, inv_eq_self]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
⊢ IsMulRightInvariant (Measure.inv μ)
[PROOFSTEP]
constructor
[GOAL]
case map_mul_right_eq_self
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
⊢ ∀ (g : G), map (fun x => x * g) (Measure.inv μ) = Measure.inv μ
[PROOFSTEP]
intro g
[GOAL]
case map_mul_right_eq_self
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
g : G
⊢ map (fun x => x * g) (Measure.inv μ) = Measure.inv μ
[PROOFSTEP]
conv_rhs => rw [← map_mul_left_eq_self μ g⁻¹]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
g : G
| Measure.inv μ
[PROOFSTEP]
rw [← map_mul_left_eq_self μ g⁻¹]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
g : G
| Measure.inv μ
[PROOFSTEP]
rw [← map_mul_left_eq_self μ g⁻¹]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
g : G
| Measure.inv μ
[PROOFSTEP]
rw [← map_mul_left_eq_self μ g⁻¹]
[GOAL]
case map_mul_right_eq_self
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulLeftInvariant μ
g : G
⊢ map (fun x => x * g) (Measure.inv μ) = Measure.inv (map (fun x => g⁻¹ * x) μ)
[PROOFSTEP]
simp_rw [Measure.inv, map_map (measurable_mul_const g) measurable_inv,
  map_map measurable_inv (measurable_const_mul g⁻¹), Function.comp, mul_inv_rev, inv_inv]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulRightInvariant μ
⊢ IsMulLeftInvariant (Measure.inv μ)
[PROOFSTEP]
constructor
[GOAL]
case map_mul_left_eq_self
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulRightInvariant μ
⊢ ∀ (g : G), map (fun x => g * x) (Measure.inv μ) = Measure.inv μ
[PROOFSTEP]
intro g
[GOAL]
case map_mul_left_eq_self
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulRightInvariant μ
g : G
⊢ map (fun x => g * x) (Measure.inv μ) = Measure.inv μ
[PROOFSTEP]
conv_rhs => rw [← map_mul_right_eq_self μ g⁻¹]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulRightInvariant μ
g : G
| Measure.inv μ
[PROOFSTEP]
rw [← map_mul_right_eq_self μ g⁻¹]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulRightInvariant μ
g : G
| Measure.inv μ
[PROOFSTEP]
rw [← map_mul_right_eq_self μ g⁻¹]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulRightInvariant μ
g : G
| Measure.inv μ
[PROOFSTEP]
rw [← map_mul_right_eq_self μ g⁻¹]
[GOAL]
case map_mul_left_eq_self
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSpace H
inst✝³ : DivisionMonoid G
inst✝² : MeasurableMul G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : IsMulRightInvariant μ
g : G
⊢ map (fun x => g * x) (Measure.inv μ) = Measure.inv (map (fun x => x * g⁻¹) μ)
[PROOFSTEP]
simp_rw [Measure.inv, map_map (measurable_const_mul g) measurable_inv,
  map_map measurable_inv (measurable_mul_const g⁻¹), Function.comp, mul_inv_rev, inv_inv]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : DivisionMonoid G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
μ✝ μ : Measure G
inst✝¹ : IsInvInvariant μ
inst✝ : IsMulLeftInvariant μ
g : G
⊢ MeasurePreserving fun t => g / t
[PROOFSTEP]
simp_rw [div_eq_mul_inv]
[GOAL]
𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁶ : MeasurableSpace G
inst✝⁵ : MeasurableSpace H
inst✝⁴ : DivisionMonoid G
inst✝³ : MeasurableMul G
inst✝² : MeasurableInv G
μ✝ μ : Measure G
inst✝¹ : IsInvInvariant μ
inst✝ : IsMulLeftInvariant μ
g : G
⊢ MeasurePreserving fun t => g * t⁻¹
[PROOFSTEP]
exact (measurePreserving_mul_left μ g).comp (measurePreserving_inv μ)
[GOAL]
𝕜 : 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✝ : T2Space G
⊢ Regular (Measure.inv μ) ↔ Regular μ
[PROOFSTEP]
constructor
[GOAL]
case mp
𝕜 : 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✝ : T2Space G
⊢ Regular (Measure.inv μ) → Regular μ
[PROOFSTEP]
intro h
[GOAL]
case mp
𝕜 : 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✝ : T2Space G
h : Regular (Measure.inv μ)
⊢ Regular μ
[PROOFSTEP]
rw [← μ.inv_inv]
[GOAL]
case mp
𝕜 : 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✝ : T2Space G
h : Regular (Measure.inv μ)
⊢ Regular (Measure.inv (Measure.inv μ))
[PROOFSTEP]
exact Measure.Regular.inv
[GOAL]
case mpr
𝕜 : 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✝ : T2Space G
⊢ Regular μ → Regular (Measure.inv μ)
[PROOFSTEP]
intro h
[GOAL]
case mpr
𝕜 : 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✝ : T2Space G
h : Regular μ
⊢ Regular (Measure.inv μ)
[PROOFSTEP]
exact Measure.Regular.inv
[GOAL]
𝕜 : 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
h : ↑↑μ K ≠ 0
⊢ IsOpenPosMeasure μ
[PROOFSTEP]
refine' ⟨fun U hU hne => _⟩
[GOAL]
𝕜 : 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
h : ↑↑μ K ≠ 0
U : Set G
hU : IsOpen U
hne : Set.Nonempty U
⊢ ↑↑μ U ≠ 0
[PROOFSTEP]
contrapose! h
[GOAL]
𝕜 : 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
U : Set G
hU : IsOpen U
hne : Set.Nonempty U
h : ↑↑μ U = 0
⊢ ↑↑μ K = 0
[PROOFSTEP]
rw [← nonpos_iff_eq_zero]
[GOAL]
𝕜 : 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
U : Set G
hU : IsOpen U
hne : Set.Nonempty U
h : ↑↑μ U = 0
⊢ ↑↑μ K ≤ 0
[PROOFSTEP]
rw [← hU.interior_eq] at hne
[GOAL]
𝕜 : 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
U : Set G
hU : IsOpen U
hne : Set.Nonempty (interior U)
h : ↑↑μ U = 0
⊢ ↑↑μ K ≤ 0
[PROOFSTEP]
obtain ⟨t, hKt⟩ : ∃ t : Finset G, K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h : G => g * h) ⁻¹' U :=
  compact_covered_by_mul_left_translates hK hne
[GOAL]
case intro
𝕜 : 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
U : Set G
hU : IsOpen U
hne : Set.Nonempty (interior U)
h : ↑↑μ U = 0
t : Finset G
hKt : K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' U
⊢ ↑↑μ K ≤ 0
[PROOFSTEP]
calc
  μ K ≤ μ (⋃ (g : G) (_ : g ∈ t), (fun h : G => g * h) ⁻¹' U) := measure_mono hKt
  _ ≤ ∑ g in t, μ ((fun h : G => g * h) ⁻¹' U) := (measure_biUnion_finset_le _ _)
  _ = 0 := by simp [measure_preimage_mul, h]
[GOAL]
𝕜 : 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
U : Set G
hU : IsOpen U
hne : Set.Nonempty (interior U)
h : ↑↑μ U = 0
t : Finset G
hKt : K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' U
⊢ ∑ g in t, ↑↑μ ((fun h => g * h) ⁻¹' U) = 0
[PROOFSTEP]
simp [measure_preimage_mul, h]
[GOAL]
𝕜 : 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 μ
inst✝ : Regular μ
s : Set G
hs : IsOpen s
⊢ ↑↑μ s = 0 ↔ s = ∅ ∨ μ = 0
[PROOFSTEP]
by_cases h3μ : μ = 0
[GOAL]
case pos
𝕜 : 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 μ
inst✝ : Regular μ
s : Set G
hs : IsOpen s
h3μ : μ = 0
⊢ ↑↑μ s = 0 ↔ s = ∅ ∨ μ = 0
[PROOFSTEP]
simp [h3μ]
[GOAL]
case neg
𝕜 : 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 μ
inst✝ : Regular μ
s : Set G
hs : IsOpen s
h3μ : ¬μ = 0
⊢ ↑↑μ s = 0 ↔ s = ∅ ∨ μ = 0
[PROOFSTEP]
haveI := isOpenPosMeasure_of_mulLeftInvariant_of_regular h3μ
[GOAL]
case neg
𝕜 : 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 μ
inst✝ : Regular μ
s : Set G
hs : IsOpen s
h3μ : ¬μ = 0
this : IsOpenPosMeasure μ
⊢ ↑↑μ s = 0 ↔ s = ∅ ∨ μ = 0
[PROOFSTEP]
simp only [h3μ, or_false_iff, hs.measure_eq_zero_iff μ]
[GOAL]
𝕜 : 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 μ
inst✝ : Regular μ
hμ : μ ≠ 0
s : Set G
hs : IsOpen s
⊢ ↑↑μ s ≠ 0 ↔ Set.Nonempty s
[PROOFSTEP]
simpa [null_iff_of_isMulLeftInvariant (μ := μ) hs, hμ] using nonempty_iff_ne_empty.symm
[GOAL]
𝕜 : 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 μ
U : Set G
hU : IsOpen U
h'U : Set.Nonempty U
h : ↑↑μ U ≠ ⊤
K : Set G
hK : IsCompact K
⊢ ↑↑μ K < ⊤
[PROOFSTEP]
rw [← hU.interior_eq] at h'U
[GOAL]
𝕜 : 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 μ
U : Set G
hU : IsOpen U
h'U : Set.Nonempty (interior U)
h : ↑↑μ U ≠ ⊤
K : Set G
hK : IsCompact K
⊢ ↑↑μ K < ⊤
[PROOFSTEP]
obtain ⟨t, hKt⟩ : ∃ t : Finset G, K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h : G => g * h) ⁻¹' U :=
  compact_covered_by_mul_left_translates hK h'U
[GOAL]
case intro
𝕜 : 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 μ
U : Set G
hU : IsOpen U
h'U : Set.Nonempty (interior U)
h : ↑↑μ U ≠ ⊤
K : Set G
hK : IsCompact K
t : Finset G
hKt : K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' U
⊢ ↑↑μ K < ⊤
[PROOFSTEP]
calc
  μ K ≤ μ (⋃ (g : G) (_ : g ∈ t), (fun h : G => g * h) ⁻¹' U) := measure_mono hKt
  _ ≤ ∑ g in t, μ ((fun h : G => g * h) ⁻¹' U) := (measure_biUnion_finset_le _ _)
  _ = Finset.card t * μ U := by simp only [measure_preimage_mul, Finset.sum_const, nsmul_eq_mul]
  _ < ∞ := ENNReal.mul_lt_top (ENNReal.nat_ne_top _) h
[GOAL]
𝕜 : 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 μ
U : Set G
hU : IsOpen U
h'U : Set.Nonempty (interior U)
h : ↑↑μ U ≠ ⊤
K : Set G
hK : IsCompact K
t : Finset G
hKt : K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' U
⊢ ∑ g in t, ↑↑μ ((fun h => g * h) ⁻¹' U) = ↑(Finset.card t) * ↑↑μ U
[PROOFSTEP]
simp only [measure_preimage_mul, Finset.sum_const, nsmul_eq_mul]
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
obtain ⟨K, hK, Kclosed, Kint⟩ : ∃ K : Set G, IsCompact K ∧ IsClosed K ∧ (1 : G) ∈ interior K :=
  by
  rcases local_isCompact_isClosed_nhds_of_group (isOpen_univ.mem_nhds (mem_univ (1 : G))) with ⟨K, hK⟩
  exact ⟨K, hK.1, hK.2.1, hK.2.2.2⟩
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
⊢ ∃ K, IsCompact K ∧ IsClosed K ∧ 1 ∈ interior K
[PROOFSTEP]
rcases local_isCompact_isClosed_nhds_of_group (isOpen_univ.mem_nhds (mem_univ (1 : G))) with ⟨K, hK⟩
[GOAL]
case intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K ∧ IsClosed K ∧ K ⊆ univ ∧ 1 ∈ interior K
⊢ ∃ K, IsCompact K ∧ IsClosed K ∧ 1 ∈ interior K
[PROOFSTEP]
exact ⟨K, hK.1, hK.2.1, hK.2.2.2⟩
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
have K_pos : 0 < μ K := measure_pos_of_nonempty_interior _ ⟨_, Kint⟩
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
have A : ∀ L : Set G, IsCompact L → ∃ g : G, Disjoint L (g • K) := fun L hL => exists_disjoint_smul_of_isCompact hL hK
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
A : ∀ (L : Set G), IsCompact L → ∃ g, Disjoint L (g • K)
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
choose! g hg using A
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
set L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
have Lcompact : ∀ n, IsCompact (L n) := by
  intro n
  induction' n with n IH
  · exact hK
  · simp_rw [iterate_succ']
    apply IsCompact.union IH (hK.smul (g (L n)))
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
⊢ ∀ (n : ℕ), IsCompact (L n)
[PROOFSTEP]
intro n
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
n : ℕ
⊢ IsCompact (L n)
[PROOFSTEP]
induction' n with n IH
[GOAL]
case zero
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
⊢ IsCompact (L Nat.zero)
[PROOFSTEP]
exact hK
[GOAL]
case succ
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
n : ℕ
IH : IsCompact (L n)
⊢ IsCompact (L (Nat.succ n))
[PROOFSTEP]
simp_rw [iterate_succ']
[GOAL]
case succ
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
n : ℕ
IH : IsCompact (L n)
⊢ IsCompact (((fun T => T ∪ g T • K) ∘ (fun T => T ∪ g T • K)^[n]) K)
[PROOFSTEP]
apply IsCompact.union IH (hK.smul (g (L n)))
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
have Lclosed : ∀ n, IsClosed (L n) := by
  intro n
  induction' n with n IH
  · exact Kclosed
  · simp_rw [iterate_succ']
    apply IsClosed.union IH (Kclosed.smul (g (L n)))
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
⊢ ∀ (n : ℕ), IsClosed (L n)
[PROOFSTEP]
intro n
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
n : ℕ
⊢ IsClosed (L n)
[PROOFSTEP]
induction' n with n IH
[GOAL]
case zero
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
⊢ IsClosed (L Nat.zero)
[PROOFSTEP]
exact Kclosed
[GOAL]
case succ
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
n : ℕ
IH : IsClosed (L n)
⊢ IsClosed (L (Nat.succ n))
[PROOFSTEP]
simp_rw [iterate_succ']
[GOAL]
case succ
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
n : ℕ
IH : IsClosed (L n)
⊢ IsClosed (((fun T => T ∪ g T • K) ∘ (fun T => T ∪ g T • K)^[n]) K)
[PROOFSTEP]
apply IsClosed.union IH (Kclosed.smul (g (L n)))
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
have M : ∀ n, μ (L n) = (n + 1 : ℕ) * μ K := by
  intro n
  induction' n with n IH
  · simp only [one_mul, Nat.cast_one, iterate_zero, id.def, Nat.zero_eq, Nat.zero_add]
  ·
    calc
      μ (L (n + 1)) = μ (L n) + μ (g (L n) • K) := by
        simp_rw [iterate_succ']
        exact measure_union' (hg _ (Lcompact _)) (Lclosed _).measurableSet
      _ = (n + 1 + 1 : ℕ) * μ K := by simp only [IH, measure_smul, add_mul, Nat.cast_add, Nat.cast_one, one_mul]
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
⊢ ∀ (n : ℕ), ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
[PROOFSTEP]
intro n
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
n : ℕ
⊢ ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
[PROOFSTEP]
induction' n with n IH
[GOAL]
case zero
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
⊢ ↑↑μ (L Nat.zero) = ↑(Nat.zero + 1) * ↑↑μ K
[PROOFSTEP]
simp only [one_mul, Nat.cast_one, iterate_zero, id.def, Nat.zero_eq, Nat.zero_add]
[GOAL]
case succ
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
n : ℕ
IH : ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
⊢ ↑↑μ (L (Nat.succ n)) = ↑(Nat.succ n + 1) * ↑↑μ K
[PROOFSTEP]
calc
  μ (L (n + 1)) = μ (L n) + μ (g (L n) • K) := by
    simp_rw [iterate_succ']
    exact measure_union' (hg _ (Lcompact _)) (Lclosed _).measurableSet
  _ = (n + 1 + 1 : ℕ) * μ K := by simp only [IH, measure_smul, add_mul, Nat.cast_add, Nat.cast_one, one_mul]
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
n : ℕ
IH : ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
⊢ ↑↑μ (L (n + 1)) = ↑↑μ (L n) + ↑↑μ (g (L n) • K)
[PROOFSTEP]
simp_rw [iterate_succ']
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
n : ℕ
IH : ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
⊢ ↑↑μ (((fun T => T ∪ g T • K) ∘ (fun T => T ∪ g T • K)^[n]) K) =
    ↑↑μ ((fun T => T ∪ g T • K)^[n] K) + ↑↑μ (g ((fun T => T ∪ g T • K)^[n] K) • K)
[PROOFSTEP]
exact measure_union' (hg _ (Lcompact _)) (Lclosed _).measurableSet
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
n : ℕ
IH : ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
⊢ ↑↑μ (L n) + ↑↑μ (g (L n) • K) = ↑(n + 1 + 1) * ↑↑μ K
[PROOFSTEP]
simp only [IH, measure_smul, add_mul, Nat.cast_add, Nat.cast_one, one_mul]
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
M : ∀ (n : ℕ), ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
have N : Tendsto (fun n => μ (L n)) atTop (𝓝 (∞ * μ K)) :=
  by
  simp_rw [M]
  apply ENNReal.Tendsto.mul_const _ (Or.inl ENNReal.top_ne_zero)
  exact ENNReal.tendsto_nat_nhds_top.comp (tendsto_add_atTop_nat _)
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
M : ∀ (n : ℕ), ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
⊢ Tendsto (fun n => ↑↑μ (L n)) atTop (𝓝 (⊤ * ↑↑μ K))
[PROOFSTEP]
simp_rw [M]
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
M : ∀ (n : ℕ), ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
⊢ Tendsto (fun n => ↑(n + 1) * ↑↑μ K) atTop (𝓝 (⊤ * ↑↑μ K))
[PROOFSTEP]
apply ENNReal.Tendsto.mul_const _ (Or.inl ENNReal.top_ne_zero)
[GOAL]
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
M : ∀ (n : ℕ), ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
⊢ Tendsto (fun x => ↑(x + 1)) atTop (𝓝 ⊤)
[PROOFSTEP]
exact ENNReal.tendsto_nat_nhds_top.comp (tendsto_add_atTop_nat _)
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
M : ∀ (n : ℕ), ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
N : Tendsto (fun n => ↑↑μ (L n)) atTop (𝓝 (⊤ * ↑↑μ K))
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
simp only [ENNReal.top_mul', K_pos.ne', if_false] at N
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
M : ∀ (n : ℕ), ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
N : Tendsto (fun n => ↑↑μ ((fun T => T ∪ g T • K)^[n] K)) atTop (𝓝 ⊤)
⊢ ↑↑μ univ = ⊤
[PROOFSTEP]
apply top_le_iff.1
[GOAL]
case intro.intro.intro
𝕜 : 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 μ✝
inst✝³ : LocallyCompactSpace G
inst✝² : NoncompactSpace G
μ : Measure G
inst✝¹ : IsOpenPosMeasure μ
inst✝ : IsMulLeftInvariant μ
K : Set G
hK : IsCompact K
Kclosed : IsClosed K
Kint : 1 ∈ interior K
K_pos : 0 < ↑↑μ K
g : Set G → G
hg : ∀ (L : Set G), IsCompact L → Disjoint L (g L • K)
L : ℕ → Set G := fun n => (fun T => T ∪ g T • K)^[n] K
Lcompact : ∀ (n : ℕ), IsCompact (L n)
Lclosed : ∀ (n : ℕ), IsClosed (L n)
M : ∀ (n : ℕ), ↑↑μ (L n) = ↑(n + 1) * ↑↑μ K
N : Tendsto (fun n => ↑↑μ ((fun T => T ∪ g T • K)^[n] K)) atTop (𝓝 ⊤)
⊢ ⊤ ≤ ↑↑μ univ
[PROOFSTEP]
exact le_of_tendsto' N fun n => measure_mono (subset_univ _)
[GOAL]
𝕜 : 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) μ = μ
[PROOFSTEP]
simp_rw [mul_comm, map_mul_left_eq_self]
[GOAL]
𝕜 : 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}
[PROOFSTEP]
convert measure_preimage_mul μ g⁻¹ _
[GOAL]
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}
[PROOFSTEP]
simp only [mul_one, preimage_mul_left_singleton, inv_inv]
[GOAL]
𝕜 : 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 < ⊤
[PROOFSTEP]
intro K hK
[GOAL]
𝕜 : 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 < ⊤
[PROOFSTEP]
rw [map_apply hf.measurable hK.measurableSet]
[GOAL]
𝕜 : 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) < ⊤
[PROOFSTEP]
exact IsCompact.measure_lt_top ((⟨⟨f, hf⟩, h_prop⟩ : CocompactMap G H).isCompact_preimage hK)
[GOAL]
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
⊢ NoAtoms μ
[PROOFSTEP]
suffices H : μ {(1 : G)} ≤ 0
[GOAL]
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
H : ↑↑μ {1} ≤ 0
⊢ NoAtoms μ
[PROOFSTEP]
constructor
[GOAL]
case measure_singleton
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
H : ↑↑μ {1} ≤ 0
⊢ ∀ (x : G), ↑↑μ {x} = 0
[PROOFSTEP]
simp [le_bot_iff.1 H]
[GOAL]
case H
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
⊢ ↑↑μ {1} ≤ 0
[PROOFSTEP]
obtain ⟨K, K_compact, K_int⟩ : ∃ K : Set G, IsCompact K ∧ (1 : G) ∈ interior K :=
  by
  rcases exists_compact_subset isOpen_univ (mem_univ (1 : G)) with ⟨K, hK⟩
  exact ⟨K, hK.1, hK.2.1⟩
[GOAL]
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
⊢ ∃ K, IsCompact K ∧ 1 ∈ interior K
[PROOFSTEP]
rcases exists_compact_subset isOpen_univ (mem_univ (1 : G)) with ⟨K, hK⟩
[GOAL]
case intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
hK : IsCompact K ∧ 1 ∈ interior K ∧ K ⊆ univ
⊢ ∃ K, IsCompact K ∧ 1 ∈ interior K
[PROOFSTEP]
exact ⟨K, hK.1, hK.2.1⟩
[GOAL]
case H.intro.intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
⊢ ↑↑μ {1} ≤ 0
[PROOFSTEP]
have K_inf : Set.Infinite K := infinite_of_mem_nhds (1 : G) (mem_interior_iff_mem_nhds.1 K_int)
[GOAL]
case H.intro.intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
⊢ ↑↑μ {1} ≤ 0
[PROOFSTEP]
have μKlt : μ K ≠ ∞ := K_compact.measure_lt_top.ne
[GOAL]
case H.intro.intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
⊢ ↑↑μ {1} ≤ 0
[PROOFSTEP]
have I : ∀ n : ℕ, μ {(1 : G)} ≤ μ K / n := by
  intro n
  obtain ⟨t, tK, tn⟩ : ∃ t : Finset G, ↑t ⊆ K ∧ t.card = n := K_inf.exists_subset_card_eq n
  have A : μ t ≤ μ K := measure_mono tK
  have B : μ t = n * μ {(1 : G)} := by
    rw [← biUnion_of_singleton (t : Set G)]
    change μ (⋃ x ∈ t, { x }) = n * μ {1}
    rw [@measure_biUnion_finset G G _ μ t fun i => { i }]
    · simp only [tn, Finset.sum_const, nsmul_eq_mul, haar_singleton]
    · intro x _ y _ xy
      simp only [onFun, xy.symm, mem_singleton_iff, not_false_iff, disjoint_singleton_right]
    · intro b _; exact measurableSet_singleton b
  rw [B] at A
  rwa [ENNReal.le_div_iff_mul_le _ (Or.inr μKlt), mul_comm]
  right
  apply (measure_pos_of_nonempty_interior μ ⟨_, K_int⟩).ne'
[GOAL]
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
⊢ ∀ (n : ℕ), ↑↑μ {1} ≤ ↑↑μ K / ↑n
[PROOFSTEP]
intro n
[GOAL]
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
⊢ ↑↑μ {1} ≤ ↑↑μ K / ↑n
[PROOFSTEP]
obtain ⟨t, tK, tn⟩ : ∃ t : Finset G, ↑t ⊆ K ∧ t.card = n := K_inf.exists_subset_card_eq n
[GOAL]
case intro.intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
⊢ ↑↑μ {1} ≤ ↑↑μ K / ↑n
[PROOFSTEP]
have A : μ t ≤ μ K := measure_mono tK
[GOAL]
case intro.intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑↑μ ↑t ≤ ↑↑μ K
⊢ ↑↑μ {1} ≤ ↑↑μ K / ↑n
[PROOFSTEP]
have B : μ t = n * μ {(1 : G)} := by
  rw [← biUnion_of_singleton (t : Set G)]
  change μ (⋃ x ∈ t, { x }) = n * μ {1}
  rw [@measure_biUnion_finset G G _ μ t fun i => { i }]
  · simp only [tn, Finset.sum_const, nsmul_eq_mul, haar_singleton]
  · intro x _ y _ xy
    simp only [onFun, xy.symm, mem_singleton_iff, not_false_iff, disjoint_singleton_right]
  · intro b _; exact measurableSet_singleton b
[GOAL]
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑↑μ ↑t ≤ ↑↑μ K
⊢ ↑↑μ ↑t = ↑n * ↑↑μ {1}
[PROOFSTEP]
rw [← biUnion_of_singleton (t : Set G)]
[GOAL]
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑↑μ ↑t ≤ ↑↑μ K
⊢ ↑↑μ (⋃ (x : G) (_ : x ∈ ↑t), {x}) = ↑n * ↑↑μ {1}
[PROOFSTEP]
change μ (⋃ x ∈ t, { x }) = n * μ {1}
[GOAL]
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑↑μ ↑t ≤ ↑↑μ K
⊢ ↑↑μ (⋃ (x : G) (_ : x ∈ t), {x}) = ↑n * ↑↑μ {1}
[PROOFSTEP]
rw [@measure_biUnion_finset G G _ μ t fun i => { i }]
[GOAL]
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑↑μ ↑t ≤ ↑↑μ K
⊢ ∑ p in t, ↑↑μ {p} = ↑n * ↑↑μ {1}
[PROOFSTEP]
simp only [tn, Finset.sum_const, nsmul_eq_mul, haar_singleton]
[GOAL]
case hd
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑↑μ ↑t ≤ ↑↑μ K
⊢ PairwiseDisjoint ↑t fun i => {i}
[PROOFSTEP]
intro x _ y _ xy
[GOAL]
case hd
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑↑μ ↑t ≤ ↑↑μ K
x : G
a✝¹ : x ∈ ↑t
y : G
a✝ : y ∈ ↑t
xy : x ≠ y
⊢ (Disjoint on fun i => {i}) x y
[PROOFSTEP]
simp only [onFun, xy.symm, mem_singleton_iff, not_false_iff, disjoint_singleton_right]
[GOAL]
case hm
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑↑μ ↑t ≤ ↑↑μ K
⊢ ∀ (b : G), b ∈ t → MeasurableSet {b}
[PROOFSTEP]
intro b _
[GOAL]
case hm
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑↑μ ↑t ≤ ↑↑μ K
b : G
a✝ : b ∈ t
⊢ MeasurableSet {b}
[PROOFSTEP]
exact measurableSet_singleton b
[GOAL]
case intro.intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑↑μ ↑t ≤ ↑↑μ K
B : ↑↑μ ↑t = ↑n * ↑↑μ {1}
⊢ ↑↑μ {1} ≤ ↑↑μ K / ↑n
[PROOFSTEP]
rw [B] at A
[GOAL]
case intro.intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑n * ↑↑μ {1} ≤ ↑↑μ K
B : ↑↑μ ↑t = ↑n * ↑↑μ {1}
⊢ ↑↑μ {1} ≤ ↑↑μ K / ↑n
[PROOFSTEP]
rwa [ENNReal.le_div_iff_mul_le _ (Or.inr μKlt), mul_comm]
[GOAL]
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑n * ↑↑μ {1} ≤ ↑↑μ K
B : ↑↑μ ↑t = ↑n * ↑↑μ {1}
⊢ ↑n ≠ 0 ∨ ↑↑μ K ≠ 0
[PROOFSTEP]
right
[GOAL]
case h
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
n : ℕ
t : Finset G
tK : ↑t ⊆ K
tn : Finset.card t = n
A : ↑n * ↑↑μ {1} ≤ ↑↑μ K
B : ↑↑μ ↑t = ↑n * ↑↑μ {1}
⊢ ↑↑μ K ≠ 0
[PROOFSTEP]
apply (measure_pos_of_nonempty_interior μ ⟨_, K_int⟩).ne'
[GOAL]
case H.intro.intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
I : ∀ (n : ℕ), ↑↑μ {1} ≤ ↑↑μ K / ↑n
⊢ ↑↑μ {1} ≤ 0
[PROOFSTEP]
have J : Tendsto (fun n : ℕ => μ K / n) atTop (𝓝 (μ K / ∞)) :=
  ENNReal.Tendsto.const_div ENNReal.tendsto_nat_nhds_top (Or.inr μKlt)
[GOAL]
case H.intro.intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
I : ∀ (n : ℕ), ↑↑μ {1} ≤ ↑↑μ K / ↑n
J : Tendsto (fun n => ↑↑μ K / ↑n) atTop (𝓝 (↑↑μ K / ⊤))
⊢ ↑↑μ {1} ≤ 0
[PROOFSTEP]
simp only [ENNReal.div_top] at J
[GOAL]
case H.intro.intro
𝕜 : 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
inst✝³ : T1Space G
inst✝² : LocallyCompactSpace G
inst✝¹ : NeBot (𝓝[{1}ᶜ] 1)
μ : Measure G
inst✝ : IsHaarMeasure μ
K : Set G
K_compact : IsCompact K
K_int : 1 ∈ interior K
K_inf : Set.Infinite K
μKlt : ↑↑μ K ≠ ⊤
I : ∀ (n : ℕ), ↑↑μ {1} ≤ ↑↑μ K / ↑n
J : Tendsto (fun n => ↑↑μ K / ↑n) atTop (𝓝 0)
⊢ ↑↑μ {1} ≤ 0
[PROOFSTEP]
exact ge_of_tendsto' J I


[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
hp : p ∈ R[X]⁰
⊢ ↑(taylor r) p ∈ R[X]⁰
[PROOFSTEP]
rw [mem_nonZeroDivisors_iff]
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
hp : p ∈ R[X]⁰
⊢ ∀ (x : (fun x => R[X]) p), x * ↑(taylor r) p = 0 → x = 0
[PROOFSTEP]
intro x hx
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
hp : p ∈ R[X]⁰
x : R[X]
hx : x * ↑(taylor r) p = 0
⊢ x = 0
[PROOFSTEP]
have : x = taylor (r - r) x := by simp
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
hp : p ∈ R[X]⁰
x : R[X]
hx : x * ↑(taylor r) p = 0
⊢ x = ↑(taylor (r - r)) x
[PROOFSTEP]
simp
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
hp : p ∈ R[X]⁰
x : R[X]
hx : x * ↑(taylor r) p = 0
this : x = ↑(taylor (r - r)) x
⊢ x = 0
[PROOFSTEP]
rwa [this, sub_eq_add_neg, ← taylor_taylor, ← taylor_mul, LinearMap.map_eq_zero_iff _ (taylor_injective _),
  mul_right_mem_nonZeroDivisors_eq_zero_iff hp, LinearMap.map_eq_zero_iff _ (taylor_injective _)] at hx
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
⊢ R[X]⁰ ≤
    Submonoid.comap
      {
        toMonoidHom :=
          { toOneHom := { toFun := ↑(taylor r), map_one' := (_ : ↑(taylor r) 1 = ↑Polynomial.C 1) },
            map_mul' := (_ : ∀ (p q : R[X]), ↑(taylor r) (p * q) = ↑(taylor r) p * ↑(taylor r) q) },
        map_zero' := (_ : ↑(taylor r) 0 = 0),
        map_add' := (_ : ∀ (x y : R[X]), ↑(taylor r) (x + y) = ↑(taylor r) x + ↑(taylor r) y) }
      R[X]⁰
[PROOFSTEP]
exact taylor_mem_nonZeroDivisors r
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
⊢ ↑(laurentAux r) (↑(algebraMap R[X] (RatFunc R)) p) = ↑(algebraMap ((fun x => R[X]) p) (RatFunc R)) (↑(taylor r) p)
[PROOFSTEP]
rw [← mk_one, ← mk_one, mk_eq_div, laurentAux_div, mk_eq_div, taylor_one, map_one, map_one, map_one]
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
⊢ ↑(laurent r) X = X + ↑C r
[PROOFSTEP]
rw [← algebraMap_X, laurent_algebraMap, taylor_X, _root_.map_add, algebraMap_C]
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
x : R
⊢ ↑(laurent r) (↑C x) = ↑C x
[PROOFSTEP]
rw [← algebraMap_C, laurent_algebraMap, taylor_C]
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
⊢ ↑(laurent 0) f = f
[PROOFSTEP]
induction f using RatFunc.induction_on
[GOAL]
case f
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
p✝ q✝ : R[X]
hq✝ : q✝ ≠ 0
⊢ ↑(laurent 0) (↑(algebraMap R[X] (RatFunc R)) p✝ / ↑(algebraMap R[X] (RatFunc R)) q✝) =
    ↑(algebraMap R[X] (RatFunc R)) p✝ / ↑(algebraMap R[X] (RatFunc R)) q✝
[PROOFSTEP]
simp
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
⊢ ↑(laurent r) (↑(laurent s) f) = ↑(laurent (r + s)) f
[PROOFSTEP]
induction f using RatFunc.induction_on
[GOAL]
case f
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
p✝ q✝ : R[X]
hq✝ : q✝ ≠ 0
⊢ ↑(laurent r) (↑(laurent s) (↑(algebraMap R[X] (RatFunc R)) p✝ / ↑(algebraMap R[X] (RatFunc R)) q✝)) =
    ↑(laurent (r + s)) (↑(algebraMap R[X] (RatFunc R)) p✝ / ↑(algebraMap R[X] (RatFunc R)) q✝)
[PROOFSTEP]
simp_rw [laurent_div, taylor_taylor]
[GOAL]
R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f x✝¹ x✝ : RatFunc R
h : ↑(laurent r) x✝¹ = ↑(laurent r) x✝
⊢ x✝¹ = x✝
[PROOFSTEP]
simpa [laurent_laurent] using congr_arg (laurent (-r)) h


[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
⊢ (u ⟶ v) = (u' ⟶ v')
[PROOFSTEP]
{rw [hu, hv]
}
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
⊢ (u ⟶ v) = (u' ⟶ v')
[PROOFSTEP]
rw [hu, hv]
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
⊢ cast hu hv e = _root_.cast (_ : (u ⟶ v) = (u' ⟶ v')) e
[PROOFSTEP]
subst_vars
[GOAL]
U : Type u_1
inst✝ : Quiver U
u' v' : U
e : u' ⟶ v'
⊢ cast (_ : u' = u') (_ : v' = v') e = _root_.cast (_ : (u' ⟶ v') = (u' ⟶ v')) e
[PROOFSTEP]
rfl
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' u'' v'' : U
e : u ⟶ v
hu : u = u'
hv : v = v'
hu' : u' = u''
hv' : v' = v''
⊢ cast hu' hv' (cast hu hv e) = cast (_ : u = u'') (_ : v = v'') e
[PROOFSTEP]
subst_vars
[GOAL]
U : Type u_1
inst✝ : Quiver U
u'' v'' : U
e : u'' ⟶ v''
⊢ cast (_ : u'' = u'') (_ : v'' = v'') (cast (_ : u'' = u'') (_ : v'' = v'') e) = cast (_ : u'' = u'') (_ : v'' = v'') e
[PROOFSTEP]
rfl
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
⊢ HEq (cast hu hv e) e
[PROOFSTEP]
subst_vars
[GOAL]
U : Type u_1
inst✝ : Quiver U
u' v' : U
e : u' ⟶ v'
⊢ HEq (cast (_ : u' = u') (_ : v' = v') e) e
[PROOFSTEP]
rfl
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
e' : u' ⟶ v'
⊢ cast hu hv e = e' ↔ HEq e e'
[PROOFSTEP]
rw [Hom.cast_eq_cast]
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
e' : u' ⟶ v'
⊢ _root_.cast (_ : (u ⟶ v) = (u' ⟶ v')) e = e' ↔ HEq e e'
[PROOFSTEP]
exact _root_.cast_eq_iff_heq
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
e' : u' ⟶ v'
⊢ e' = cast hu hv e ↔ HEq e' e
[PROOFSTEP]
rw [eq_comm, Hom.cast_eq_iff_heq]
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
e : u ⟶ v
e' : u' ⟶ v'
⊢ HEq e e' ↔ HEq e' e
[PROOFSTEP]
exact ⟨HEq.symm, HEq.symm⟩
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
p : Path u v
⊢ Path u v = Path u' v'
[PROOFSTEP]
rw [hu, hv]
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
p : Path u v
⊢ cast hu hv p = _root_.cast (_ : Path u v = Path u' v') p
[PROOFSTEP]
subst_vars
[GOAL]
U : Type u_1
inst✝ : Quiver U
u' v' : U
p : Path u' v'
⊢ cast (_ : u' = u') (_ : v' = v') p = _root_.cast (_ : Path u' v' = Path u' v') p
[PROOFSTEP]
rfl
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' u'' v'' : U
p : Path u v
hu : u = u'
hv : v = v'
hu' : u' = u''
hv' : v' = v''
⊢ cast hu' hv' (cast hu hv p) = cast (_ : u = u'') (_ : v = v'') p
[PROOFSTEP]
subst_vars
[GOAL]
U : Type u_1
inst✝ : Quiver U
u'' v'' : U
p : Path u'' v''
⊢ cast (_ : u'' = u'') (_ : v'' = v'') (cast (_ : u'' = u'') (_ : v'' = v'') p) = cast (_ : u'' = u'') (_ : v'' = v'') p
[PROOFSTEP]
rfl
[GOAL]
U : Type u_1
inst✝ : Quiver U
u u' : U
hu : u = u'
⊢ cast hu hu nil = nil
[PROOFSTEP]
subst_vars
[GOAL]
U : Type u_1
inst✝ : Quiver U
u' : U
⊢ cast (_ : u' = u') (_ : u' = u') nil = nil
[PROOFSTEP]
rfl
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
p : Path u v
⊢ HEq (cast hu hv p) p
[PROOFSTEP]
rw [Path.cast_eq_cast]
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
p : Path u v
⊢ HEq (_root_.cast (_ : Path u v = Path u' v') p) p
[PROOFSTEP]
exact _root_.cast_heq _ _
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
p : Path u v
p' : Path u' v'
⊢ cast hu hv p = p' ↔ HEq p p'
[PROOFSTEP]
rw [Path.cast_eq_cast]
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v u' v' : U
hu : u = u'
hv : v = v'
p : Path u v
p' : Path u' v'
⊢ _root_.cast (_ : Path u v = Path u' v') p = p' ↔ HEq p p'
[PROOFSTEP]
exact _root_.cast_eq_iff_heq
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v w u' w' : U
p : Path u v
e : v ⟶ w
hu : u = u'
hw : w = w'
⊢ cast hu hw (cons p e) = cons (cast hu (_ : v = v) p) (Hom.cast (_ : v = v) hw e)
[PROOFSTEP]
subst_vars
[GOAL]
U : Type u_1
inst✝ : Quiver U
v u' w' : U
p : Path u' v
e : v ⟶ w'
⊢ cast (_ : u' = u') (_ : w' = w') (cons p e) =
    cons (cast (_ : u' = u') (_ : v = v) p) (Hom.cast (_ : v = v) (_ : w' = w') e)
[PROOFSTEP]
rfl
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v v' w : U
p : Path u v
p' : Path u v'
e : v ⟶ w
e' : v' ⟶ w
h : cons p e = cons p' e'
⊢ Path.cast (_ : u = u) (_ : v = v') p = p'
[PROOFSTEP]
rw [Path.cast_eq_iff_heq]
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v v' w : U
p : Path u v
p' : Path u v'
e : v ⟶ w
e' : v' ⟶ w
h : cons p e = cons p' e'
⊢ HEq p p'
[PROOFSTEP]
exact heq_of_cons_eq_cons h
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v v' w : U
p : Path u v
p' : Path u v'
e : v ⟶ w
e' : v' ⟶ w
h : cons p e = cons p' e'
⊢ Hom.cast (_ : v = v') (_ : w = w) e = e'
[PROOFSTEP]
rw [Hom.cast_eq_iff_heq]
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v v' w : U
p : Path u v
p' : Path u v'
e : v ⟶ w
e' : v' ⟶ w
h : cons p e = cons p' e'
⊢ HEq e e'
[PROOFSTEP]
exact hom_heq_of_cons_eq_cons h
[GOAL]
U : Type u_1
inst✝ : Quiver U
u v : U
p : Path u v
hzero : length p = 0
⊢ Path.cast (_ : u = v) (_ : v = v) p = nil
[PROOFSTEP]
cases p
[GOAL]
case nil
U : Type u_1
inst✝ : Quiver U
u : U
hzero : length nil = 0
⊢ Path.cast (_ : u = u) (_ : u = u) nil = nil
[PROOFSTEP]
rfl
[GOAL]
case cons
U : Type u_1
inst✝ : Quiver U
u v b✝ : U
a✝¹ : Path u b✝
a✝ : b✝ ⟶ v
hzero : length (cons a✝¹ a✝) = 0
⊢ Path.cast (_ : u = v) (_ : v = v) (cons a✝¹ a✝) = nil
[PROOFSTEP]
simp only [Nat.succ_ne_zero, length_cons] at hzero