[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
⊢ ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) ((fun x => g • x) ⁻¹' A) =
    ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) A
[PROOFSTEP]
let π : G → G ⧸ Γ := QuotientGroup.mk
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
⊢ ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) ((fun x => g • x) ⁻¹' A) =
    ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) A
[PROOFSTEP]
have meas_π : Measurable π := continuous_quotient_mk'.measurable
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
⊢ ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) ((fun x => g • x) ⁻¹' A) =
    ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) A
[PROOFSTEP]
have 𝓕meas : NullMeasurableSet 𝓕 μ := h𝓕.nullMeasurableSet
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
⊢ ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) ((fun x => g • x) ⁻¹' A) =
    ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) A
[PROOFSTEP]
have meas_πA : MeasurableSet (π ⁻¹' A) := measurableSet_preimage meas_π hA
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
meas_πA : MeasurableSet (π ⁻¹' A)
⊢ ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) ((fun x => g • x) ⁻¹' A) =
    ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) A
[PROOFSTEP]
rw [Measure.map_apply meas_π hA, Measure.map_apply meas_π (measurableSet_preimage (measurable_const_smul g) hA),
  Measure.restrict_apply₀' 𝓕meas, Measure.restrict_apply₀' 𝓕meas]
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
meas_πA : MeasurableSet (π ⁻¹' A)
⊢ ↑↑μ (π ⁻¹' ((fun x x_1 => x • x_1) g ⁻¹' A) ∩ 𝓕) = ↑↑μ (π ⁻¹' A ∩ 𝓕)
[PROOFSTEP]
set π_preA := π ⁻¹' A
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
⊢ ↑↑μ (π ⁻¹' ((fun x x_1 => x • x_1) g ⁻¹' A) ∩ 𝓕) = ↑↑μ (π_preA ∩ 𝓕)
[PROOFSTEP]
have : π ⁻¹' ((fun x : G ⧸ Γ => g • x) ⁻¹' A) = (g * ·) ⁻¹' π_preA := by ext1; simp
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
⊢ π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
[PROOFSTEP]
ext1
[GOAL]
case h
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
x✝ : G
⊢ x✝ ∈ π ⁻¹' ((fun x => g • x) ⁻¹' A) ↔ x✝ ∈ (fun x => g * x) ⁻¹' π_preA
[PROOFSTEP]
simp
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
⊢ ↑↑μ (π ⁻¹' ((fun x x_1 => x • x_1) g ⁻¹' A) ∩ 𝓕) = ↑↑μ (π_preA ∩ 𝓕)
[PROOFSTEP]
rw [this]
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
⊢ ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ 𝓕)
[PROOFSTEP]
have : μ ((g * ·) ⁻¹' π_preA ∩ 𝓕) = μ (π_preA ∩ (g⁻¹ * ·) ⁻¹' 𝓕) :=
  by
  trans μ ((g * ·) ⁻¹' (π_preA ∩ (g⁻¹ * ·) ⁻¹' 𝓕))
  · rw [preimage_inter]
    congr 2
    simp [Set.preimage]
  rw [measure_preimage_mul]
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
⊢ ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
[PROOFSTEP]
trans μ ((g * ·) ⁻¹' (π_preA ∩ (g⁻¹ * ·) ⁻¹' 𝓕))
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
⊢ ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ ((fun x => g * x) ⁻¹' (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕))
[PROOFSTEP]
rw [preimage_inter]
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
⊢ ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) =
    ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ (fun x => g * x) ⁻¹' ((fun x => g⁻¹ * x) ⁻¹' 𝓕))
[PROOFSTEP]
congr 2
[GOAL]
case e_a.e_a
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
⊢ 𝓕 = (fun x => g * x) ⁻¹' ((fun x => g⁻¹ * x) ⁻¹' 𝓕)
[PROOFSTEP]
simp [Set.preimage]
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
⊢ ↑↑μ ((fun x => g * x) ⁻¹' (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
[PROOFSTEP]
rw [measure_preimage_mul]
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
⊢ ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ 𝓕)
[PROOFSTEP]
rw [this]
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
⊢ ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕) = ↑↑μ (π_preA ∩ 𝓕)
[PROOFSTEP]
have h𝓕_translate_fundom : IsFundamentalDomain (Subgroup.opposite Γ) (g • 𝓕) μ := h𝓕.smul_of_comm g
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
h𝓕_translate_fundom : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } (g • 𝓕)
⊢ ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕) = ↑↑μ (π_preA ∩ 𝓕)
[PROOFSTEP]
rw [h𝓕.measure_set_eq h𝓕_translate_fundom meas_πA, ← preimage_smul_inv]
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
h𝓕_translate_fundom : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } (g • 𝓕)
⊢ ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ • x) ⁻¹' 𝓕)
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
h𝓕_translate_fundom : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } (g • 𝓕)
⊢ ∀ (g : { x // x ∈ ↑Subgroup.opposite Γ }), (fun x => g • x) ⁻¹' π_preA = π_preA
[PROOFSTEP]
rfl
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
h𝓕_translate_fundom : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } (g • 𝓕)
⊢ ∀ (g : { x // x ∈ ↑Subgroup.opposite Γ }), (fun x => g • x) ⁻¹' π_preA = π_preA
[PROOFSTEP]
rintro ⟨γ, γ_in_Γ⟩
[GOAL]
case mk
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
h𝓕_translate_fundom : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } (g • 𝓕)
γ : Gᵐᵒᵖ
γ_in_Γ : γ ∈ ↑Subgroup.opposite Γ
⊢ (fun x => { val := γ, property := γ_in_Γ } • x) ⁻¹' π_preA = π_preA
[PROOFSTEP]
ext x
[GOAL]
case mk.h
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
h𝓕_translate_fundom : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } (g • 𝓕)
γ : Gᵐᵒᵖ
γ_in_Γ : γ ∈ ↑Subgroup.opposite Γ
x : G
⊢ x ∈ (fun x => { val := γ, property := γ_in_Γ } • x) ⁻¹' π_preA ↔ x ∈ π_preA
[PROOFSTEP]
have : π (x * MulOpposite.unop γ) = π x := by simpa [QuotientGroup.eq'] using γ_in_Γ
[GOAL]
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
h𝓕_translate_fundom : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } (g • 𝓕)
γ : Gᵐᵒᵖ
γ_in_Γ : γ ∈ ↑Subgroup.opposite Γ
x : G
⊢ π (x * MulOpposite.unop γ) = π x
[PROOFSTEP]
simpa [QuotientGroup.eq'] using γ_in_Γ
[GOAL]
case mk.h
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝¹ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this✝ : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
h𝓕_translate_fundom : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } (g • 𝓕)
γ : Gᵐᵒᵖ
γ_in_Γ : γ ∈ ↑Subgroup.opposite Γ
x : G
this : π (x * MulOpposite.unop γ) = π x
⊢ x ∈ (fun x => { val := γ, property := γ_in_Γ } • x) ⁻¹' π_preA ↔ x ∈ π_preA
[PROOFSTEP]
simp only [(· • ·), ← this, mem_preimage]
[GOAL]
case mk.h
G : Type u_1
inst✝⁹ : Group G
inst✝⁸ : MeasurableSpace G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : TopologicalGroup G
inst✝⁵ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁴ : Countable { x // x ∈ Γ }
inst✝³ : MeasurableSpace (G ⧸ Γ)
inst✝² : BorelSpace (G ⧸ Γ)
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
g : G
A : Set (G ⧸ Γ)
hA : MeasurableSet A
π : G → G ⧸ Γ := QuotientGroup.mk
meas_π : Measurable π
𝓕meas : NullMeasurableSet 𝓕
π_preA : Set G := π ⁻¹' A
meas_πA : MeasurableSet π_preA
this✝¹ : π ⁻¹' ((fun x => g • x) ⁻¹' A) = (fun x => g * x) ⁻¹' π_preA
this✝ : ↑↑μ ((fun x => g * x) ⁻¹' π_preA ∩ 𝓕) = ↑↑μ (π_preA ∩ (fun x => g⁻¹ * x) ⁻¹' 𝓕)
h𝓕_translate_fundom : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } (g • 𝓕)
γ : Gᵐᵒᵖ
γ_in_Γ : γ ∈ ↑Subgroup.opposite Γ
x : G
this : π (x * MulOpposite.unop γ) = π x
⊢ ↑(SMul.smul { val := γ, property := γ_in_Γ } x) ∈ A ↔ ↑(x * MulOpposite.unop γ) ∈ A
[PROOFSTEP]
rfl
[GOAL]
G : Type u_1
inst✝¹⁰ : Group G
inst✝⁹ : MeasurableSpace G
inst✝⁸ : TopologicalSpace G
inst✝⁷ : TopologicalGroup G
inst✝⁶ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁵ : Countable { x // x ∈ Γ }
inst✝⁴ : MeasurableSpace (G ⧸ Γ)
inst✝³ : BorelSpace (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
x : G ⧸ Γ
⊢ map (fun x_1 => x * x_1) (map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕)) =
    map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕)
[PROOFSTEP]
apply Measure.ext
[GOAL]
case h
G : Type u_1
inst✝¹⁰ : Group G
inst✝⁹ : MeasurableSpace G
inst✝⁸ : TopologicalSpace G
inst✝⁷ : TopologicalGroup G
inst✝⁶ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁵ : Countable { x // x ∈ Γ }
inst✝⁴ : MeasurableSpace (G ⧸ Γ)
inst✝³ : BorelSpace (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
x : G ⧸ Γ
⊢ ∀ (s : Set (G ⧸ Γ)),
    MeasurableSet s →
      ↑↑(map (fun x_1 => x * x_1) (map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕))) s =
        ↑↑(map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕)) s
[PROOFSTEP]
intro A hA
[GOAL]
case h
G : Type u_1
inst✝¹⁰ : Group G
inst✝⁹ : MeasurableSpace G
inst✝⁸ : TopologicalSpace G
inst✝⁷ : TopologicalGroup G
inst✝⁶ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁵ : Countable { x // x ∈ Γ }
inst✝⁴ : MeasurableSpace (G ⧸ Γ)
inst✝³ : BorelSpace (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
x : G ⧸ Γ
A : Set (G ⧸ Γ)
hA : MeasurableSet A
⊢ ↑↑(map (fun x_1 => x * x_1) (map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕))) A =
    ↑↑(map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕)) A
[PROOFSTEP]
obtain ⟨x₁, h⟩ := @Quotient.exists_rep _ (QuotientGroup.leftRel Γ) x
[GOAL]
case h.intro
G : Type u_1
inst✝¹⁰ : Group G
inst✝⁹ : MeasurableSpace G
inst✝⁸ : TopologicalSpace G
inst✝⁷ : TopologicalGroup G
inst✝⁶ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁵ : Countable { x // x ∈ Γ }
inst✝⁴ : MeasurableSpace (G ⧸ Γ)
inst✝³ : BorelSpace (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
x : G ⧸ Γ
A : Set (G ⧸ Γ)
hA : MeasurableSet A
x₁ : G
h : Quotient.mk (QuotientGroup.leftRel Γ) x₁ = x
⊢ ↑↑(map (fun x_1 => x * x_1) (map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕))) A =
    ↑↑(map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕)) A
[PROOFSTEP]
haveI := h𝓕.smulInvariantMeasure_map
[GOAL]
case h.intro
G : Type u_1
inst✝¹⁰ : Group G
inst✝⁹ : MeasurableSpace G
inst✝⁸ : TopologicalSpace G
inst✝⁷ : TopologicalGroup G
inst✝⁶ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁵ : Countable { x // x ∈ Γ }
inst✝⁴ : MeasurableSpace (G ⧸ Γ)
inst✝³ : BorelSpace (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
x : G ⧸ Γ
A : Set (G ⧸ Γ)
hA : MeasurableSet A
x₁ : G
h : Quotient.mk (QuotientGroup.leftRel Γ) x₁ = x
this : SMulInvariantMeasure G (G ⧸ Γ) (map QuotientGroup.mk (Measure.restrict μ 𝓕))
⊢ ↑↑(map (fun x_1 => x * x_1) (map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕))) A =
    ↑↑(map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕)) A
[PROOFSTEP]
convert measure_preimage_smul x₁ ((Measure.map QuotientGroup.mk) (μ.restrict 𝓕)) A using 1
[GOAL]
case h.e'_2
G : Type u_1
inst✝¹⁰ : Group G
inst✝⁹ : MeasurableSpace G
inst✝⁸ : TopologicalSpace G
inst✝⁷ : TopologicalGroup G
inst✝⁶ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁵ : Countable { x // x ∈ Γ }
inst✝⁴ : MeasurableSpace (G ⧸ Γ)
inst✝³ : BorelSpace (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
x : G ⧸ Γ
A : Set (G ⧸ Γ)
hA : MeasurableSet A
x₁ : G
h : Quotient.mk (QuotientGroup.leftRel Γ) x₁ = x
this : SMulInvariantMeasure G (G ⧸ Γ) (map QuotientGroup.mk (Measure.restrict μ 𝓕))
⊢ ↑↑(map (fun x_1 => x * x_1) (map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕))) A =
    ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) ((fun x => x₁ • x) ⁻¹' A)
[PROOFSTEP]
rw [← h, Measure.map_apply]
[GOAL]
case h.e'_2
G : Type u_1
inst✝¹⁰ : Group G
inst✝⁹ : MeasurableSpace G
inst✝⁸ : TopologicalSpace G
inst✝⁷ : TopologicalGroup G
inst✝⁶ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁵ : Countable { x // x ∈ Γ }
inst✝⁴ : MeasurableSpace (G ⧸ Γ)
inst✝³ : BorelSpace (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
x : G ⧸ Γ
A : Set (G ⧸ Γ)
hA : MeasurableSet A
x₁ : G
h : Quotient.mk (QuotientGroup.leftRel Γ) x₁ = x
this : SMulInvariantMeasure G (G ⧸ Γ) (map QuotientGroup.mk (Measure.restrict μ 𝓕))
⊢ ↑↑(map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕))
      ((fun x => Quotient.mk (QuotientGroup.leftRel Γ) x₁ * x) ⁻¹' A) =
    ↑↑(map QuotientGroup.mk (Measure.restrict μ 𝓕)) ((fun x => x₁ • x) ⁻¹' A)
[PROOFSTEP]
rfl
[GOAL]
case h.e'_2.hf
G : Type u_1
inst✝¹⁰ : Group G
inst✝⁹ : MeasurableSpace G
inst✝⁸ : TopologicalSpace G
inst✝⁷ : TopologicalGroup G
inst✝⁶ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁵ : Countable { x // x ∈ Γ }
inst✝⁴ : MeasurableSpace (G ⧸ Γ)
inst✝³ : BorelSpace (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
x : G ⧸ Γ
A : Set (G ⧸ Γ)
hA : MeasurableSet A
x₁ : G
h : Quotient.mk (QuotientGroup.leftRel Γ) x₁ = x
this : SMulInvariantMeasure G (G ⧸ Γ) (map QuotientGroup.mk (Measure.restrict μ 𝓕))
⊢ Measurable fun x => Quotient.mk (QuotientGroup.leftRel Γ) x₁ * x
[PROOFSTEP]
exact measurable_const_mul _
[GOAL]
case h.e'_2.hs
G : Type u_1
inst✝¹⁰ : Group G
inst✝⁹ : MeasurableSpace G
inst✝⁸ : TopologicalSpace G
inst✝⁷ : TopologicalGroup G
inst✝⁶ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁵ : Countable { x // x ∈ Γ }
inst✝⁴ : MeasurableSpace (G ⧸ Γ)
inst✝³ : BorelSpace (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulRightInvariant μ
x : G ⧸ Γ
A : Set (G ⧸ Γ)
hA : MeasurableSet A
x₁ : G
h : Quotient.mk (QuotientGroup.leftRel Γ) x₁ = x
this : SMulInvariantMeasure G (G ⧸ Γ) (map QuotientGroup.mk (Measure.restrict μ 𝓕))
⊢ MeasurableSet A
[PROOFSTEP]
exact hA
[GOAL]
G : Type u_1
inst✝¹² : Group G
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : TopologicalGroup G
inst✝⁸ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁷ : Countable { x // x ∈ Γ }
inst✝⁶ : MeasurableSpace (G ⧸ Γ)
inst✝⁵ : BorelSpace (G ⧸ Γ)
inst✝⁴ : T2Space (G ⧸ Γ)
inst✝³ : SecondCountableTopology (G ⧸ Γ)
K : PositiveCompacts (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsHaarMeasure μ
inst✝ : IsMulRightInvariant μ
h𝓕_finite : ↑↑μ 𝓕 < ⊤
⊢ map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕) = ↑↑μ (𝓕 ∩ ↑(QuotientGroup.mk' Γ) ⁻¹' ↑K) • haarMeasure K
[PROOFSTEP]
let π : G →* G ⧸ Γ := QuotientGroup.mk' Γ
[GOAL]
G : Type u_1
inst✝¹² : Group G
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : TopologicalGroup G
inst✝⁸ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁷ : Countable { x // x ∈ Γ }
inst✝⁶ : MeasurableSpace (G ⧸ Γ)
inst✝⁵ : BorelSpace (G ⧸ Γ)
inst✝⁴ : T2Space (G ⧸ Γ)
inst✝³ : SecondCountableTopology (G ⧸ Γ)
K : PositiveCompacts (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsHaarMeasure μ
inst✝ : IsMulRightInvariant μ
h𝓕_finite : ↑↑μ 𝓕 < ⊤
π : G →* G ⧸ Γ := QuotientGroup.mk' Γ
⊢ map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕) = ↑↑μ (𝓕 ∩ ↑(QuotientGroup.mk' Γ) ⁻¹' ↑K) • haarMeasure K
[PROOFSTEP]
have meas_π : Measurable π := continuous_quotient_mk'.measurable
[GOAL]
G : Type u_1
inst✝¹² : Group G
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : TopologicalGroup G
inst✝⁸ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁷ : Countable { x // x ∈ Γ }
inst✝⁶ : MeasurableSpace (G ⧸ Γ)
inst✝⁵ : BorelSpace (G ⧸ Γ)
inst✝⁴ : T2Space (G ⧸ Γ)
inst✝³ : SecondCountableTopology (G ⧸ Γ)
K : PositiveCompacts (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsHaarMeasure μ
inst✝ : IsMulRightInvariant μ
h𝓕_finite : ↑↑μ 𝓕 < ⊤
π : G →* G ⧸ Γ := QuotientGroup.mk' Γ
meas_π : Measurable ↑π
⊢ map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕) = ↑↑μ (𝓕 ∩ ↑(QuotientGroup.mk' Γ) ⁻¹' ↑K) • haarMeasure K
[PROOFSTEP]
have 𝓕meas : NullMeasurableSet 𝓕 μ := h𝓕.nullMeasurableSet
[GOAL]
G : Type u_1
inst✝¹² : Group G
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : TopologicalGroup G
inst✝⁸ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁷ : Countable { x // x ∈ Γ }
inst✝⁶ : MeasurableSpace (G ⧸ Γ)
inst✝⁵ : BorelSpace (G ⧸ Γ)
inst✝⁴ : T2Space (G ⧸ Γ)
inst✝³ : SecondCountableTopology (G ⧸ Γ)
K : PositiveCompacts (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsHaarMeasure μ
inst✝ : IsMulRightInvariant μ
h𝓕_finite : ↑↑μ 𝓕 < ⊤
π : G →* G ⧸ Γ := QuotientGroup.mk' Γ
meas_π : Measurable ↑π
𝓕meas : NullMeasurableSet 𝓕
⊢ map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕) = ↑↑μ (𝓕 ∩ ↑(QuotientGroup.mk' Γ) ⁻¹' ↑K) • haarMeasure K
[PROOFSTEP]
haveI := Fact.mk h𝓕_finite
[GOAL]
G : Type u_1
inst✝¹² : Group G
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : TopologicalGroup G
inst✝⁸ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁷ : Countable { x // x ∈ Γ }
inst✝⁶ : MeasurableSpace (G ⧸ Γ)
inst✝⁵ : BorelSpace (G ⧸ Γ)
inst✝⁴ : T2Space (G ⧸ Γ)
inst✝³ : SecondCountableTopology (G ⧸ Γ)
K : PositiveCompacts (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsHaarMeasure μ
inst✝ : IsMulRightInvariant μ
h𝓕_finite : ↑↑μ 𝓕 < ⊤
π : G →* G ⧸ Γ := QuotientGroup.mk' Γ
meas_π : Measurable ↑π
𝓕meas : NullMeasurableSet 𝓕
this : Fact (↑↑μ 𝓕 < ⊤)
⊢ map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕) = ↑↑μ (𝓕 ∩ ↑(QuotientGroup.mk' Γ) ⁻¹' ↑K) • haarMeasure K
[PROOFSTEP]
haveI : (Measure.map (QuotientGroup.mk' Γ) (μ.restrict 𝓕)).IsMulLeftInvariant := h𝓕.isMulLeftInvariant_map
[GOAL]
G : Type u_1
inst✝¹² : Group G
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : TopologicalGroup G
inst✝⁸ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁷ : Countable { x // x ∈ Γ }
inst✝⁶ : MeasurableSpace (G ⧸ Γ)
inst✝⁵ : BorelSpace (G ⧸ Γ)
inst✝⁴ : T2Space (G ⧸ Γ)
inst✝³ : SecondCountableTopology (G ⧸ Γ)
K : PositiveCompacts (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsHaarMeasure μ
inst✝ : IsMulRightInvariant μ
h𝓕_finite : ↑↑μ 𝓕 < ⊤
π : G →* G ⧸ Γ := QuotientGroup.mk' Γ
meas_π : Measurable ↑π
𝓕meas : NullMeasurableSet 𝓕
this✝ : Fact (↑↑μ 𝓕 < ⊤)
this : IsMulLeftInvariant (map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕))
⊢ map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕) = ↑↑μ (𝓕 ∩ ↑(QuotientGroup.mk' Γ) ⁻¹' ↑K) • haarMeasure K
[PROOFSTEP]
rw [Measure.haarMeasure_unique (Measure.map (QuotientGroup.mk' Γ) (μ.restrict 𝓕)) K, Measure.map_apply meas_π,
  Measure.restrict_apply₀' 𝓕meas, inter_comm]
[GOAL]
G : Type u_1
inst✝¹² : Group G
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : TopologicalGroup G
inst✝⁸ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁷ : Countable { x // x ∈ Γ }
inst✝⁶ : MeasurableSpace (G ⧸ Γ)
inst✝⁵ : BorelSpace (G ⧸ Γ)
inst✝⁴ : T2Space (G ⧸ Γ)
inst✝³ : SecondCountableTopology (G ⧸ Γ)
K : PositiveCompacts (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsHaarMeasure μ
inst✝ : IsMulRightInvariant μ
h𝓕_finite : ↑↑μ 𝓕 < ⊤
π : G →* G ⧸ Γ := QuotientGroup.mk' Γ
meas_π : Measurable ↑π
𝓕meas : NullMeasurableSet 𝓕
this✝ : Fact (↑↑μ 𝓕 < ⊤)
this : IsMulLeftInvariant (map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕))
⊢ MeasurableSet ↑K
[PROOFSTEP]
exact K.isCompact.measurableSet
[GOAL]
G : Type u_1
inst✝¹² : Group G
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : TopologicalGroup G
inst✝⁸ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁷ : Countable { x // x ∈ Γ }
inst✝⁶ : MeasurableSpace (G ⧸ Γ)
inst✝⁵ : BorelSpace (G ⧸ Γ)
inst✝⁴ : T2Space (G ⧸ Γ)
inst✝³ : SecondCountableTopology (G ⧸ Γ)
K : PositiveCompacts (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsHaarMeasure μ
inst✝ : IsMulRightInvariant μ
h𝓕_finite : ↑↑μ 𝓕 < ⊤
c : ℝ≥0
h : ↑↑μ (𝓕 ∩ ↑(QuotientGroup.mk' Γ) ⁻¹' ↑K) = ↑c
⊢ map (↑(QuotientGroup.mk' Γ)) (Measure.restrict μ 𝓕) = c • haarMeasure K
[PROOFSTEP]
rw [h𝓕.map_restrict_quotient K h𝓕_finite, h]
[GOAL]
G : Type u_1
inst✝¹² : Group G
inst✝¹¹ : MeasurableSpace G
inst✝¹⁰ : TopologicalSpace G
inst✝⁹ : TopologicalGroup G
inst✝⁸ : BorelSpace G
μ : Measure G
Γ : Subgroup G
𝓕 : Set G
h𝓕 : IsFundamentalDomain { x // x ∈ ↑Subgroup.opposite Γ } 𝓕
inst✝⁷ : Countable { x // x ∈ Γ }
inst✝⁶ : MeasurableSpace (G ⧸ Γ)
inst✝⁵ : BorelSpace (G ⧸ Γ)
inst✝⁴ : T2Space (G ⧸ Γ)
inst✝³ : SecondCountableTopology (G ⧸ Γ)
K : PositiveCompacts (G ⧸ Γ)
inst✝² : Subgroup.Normal Γ
inst✝¹ : IsHaarMeasure μ
inst✝ : IsMulRightInvariant μ
h𝓕_finite : ↑↑μ 𝓕 < ⊤
c : ℝ≥0
h : ↑↑μ (𝓕 ∩ ↑(QuotientGroup.mk' Γ) ⁻¹' ↑K) = ↑c
⊢ ↑c • haarMeasure K = c • haarMeasure K
[PROOFSTEP]
rfl


[GOAL]
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : LinearOrderedCommRing S
abv : AbsoluteValue ℤ S
x : ℤˣ
⊢ ↑abv ↑x = 1
[PROOFSTEP]
rcases Int.units_eq_one_or x with (rfl | rfl)
[GOAL]
case inl
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : LinearOrderedCommRing S
abv : AbsoluteValue ℤ S
⊢ ↑abv ↑1 = 1
[PROOFSTEP]
simp
[GOAL]
case inr
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : LinearOrderedCommRing S
abv : AbsoluteValue ℤ S
⊢ ↑abv ↑(-1) = 1
[PROOFSTEP]
simp
[GOAL]
R : Type u_1
S : Type u_2
inst✝² : Ring R
inst✝¹ : LinearOrderedCommRing S
inst✝ : Nontrivial R
abv : AbsoluteValue R S
x : ℤˣ
⊢ ↑abv ↑↑x = 1
[PROOFSTEP]
rcases Int.units_eq_one_or x with (rfl | rfl)
[GOAL]
case inl
R : Type u_1
S : Type u_2
inst✝² : Ring R
inst✝¹ : LinearOrderedCommRing S
inst✝ : Nontrivial R
abv : AbsoluteValue R S
⊢ ↑abv ↑↑1 = 1
[PROOFSTEP]
simp
[GOAL]
case inr
R : Type u_1
S : Type u_2
inst✝² : Ring R
inst✝¹ : LinearOrderedCommRing S
inst✝ : Nontrivial R
abv : AbsoluteValue R S
⊢ ↑abv ↑↑(-1) = 1
[PROOFSTEP]
simp
[GOAL]
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : LinearOrderedCommRing S
abv : AbsoluteValue R S
x : ℤˣ
y : R
⊢ ↑abv (x • y) = ↑abv y
[PROOFSTEP]
rcases Int.units_eq_one_or x with (rfl | rfl)
[GOAL]
case inl
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : LinearOrderedCommRing S
abv : AbsoluteValue R S
y : R
⊢ ↑abv (1 • y) = ↑abv y
[PROOFSTEP]
simp
[GOAL]
case inr
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : LinearOrderedCommRing S
abv : AbsoluteValue R S
y : R
⊢ ↑abv (-1 • y) = ↑abv y
[PROOFSTEP]
simp