Theorem: MeasureTheory.IsFundamentalDomain.quotientMeasure_eq
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

tactic: ext U meas_U
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
⊢ Measure.map (Quotient.mk α_mod_G) (μ.restrict s) = Measure.map (Quotient.mk α_mod_G) (μ.restrict t)
state_after: case h
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
⊢ (Measure.map (Quotient.mk α_mod_G) (μ.restrict s)) U = (Measure.map (Quotient.mk α_mod_G) (μ.restrict t)) U

tactic: rw [measure_map_restrict_apply (meas_U := meas_U), measure_map_restrict_apply (meas_U := meas_U)]
state_before: case h
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
⊢ (Measure.map (Quotient.mk α_mod_G) (μ.restrict s)) U = (Measure.map (Quotient.mk α_mod_G) (μ.restrict t)) U
state_after: case h
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
⊢ μ (Quotient.mk α_mod_G ⁻¹' U ∩ s) = μ (Quotient.mk α_mod_G ⁻¹' U ∩ t)

tactic: apply MeasureTheory.IsFundamentalDomain.measure_set_eq fund_dom_s fund_dom_t
state_before: case h
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
⊢ μ (Quotient.mk α_mod_G ⁻¹' U ∩ s) = μ (Quotient.mk α_mod_G ⁻¹' U ∩ t)
state_after: case h.hA₀
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
⊢ MeasurableSet (Quotient.mk α_mod_G ⁻¹' U)

case h.hA
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
⊢ ∀ (g : G), (fun x => g • x) ⁻¹' (Quotient.mk α_mod_G ⁻¹' U) = Quotient.mk α_mod_G ⁻¹' U

tactic: exact measurableSet_quotient.mp meas_U
state_before: case h.hA₀
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
⊢ MeasurableSet (Quotient.mk α_mod_G ⁻¹' U)
state_after: no goals

tactic: intro g
state_before: case h.hA
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
⊢ ∀ (g : G), (fun x => g • x) ⁻¹' (Quotient.mk α_mod_G ⁻¹' U) = Quotient.mk α_mod_G ⁻¹' U
state_after: case h.hA
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
g : G
⊢ (fun x => g • x) ⁻¹' (Quotient.mk α_mod_G ⁻¹' U) = Quotient.mk α_mod_G ⁻¹' U

tactic: ext x
state_before: case h.hA
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
g : G
⊢ (fun x => g • x) ⁻¹' (Quotient.mk α_mod_G ⁻¹' U) = Quotient.mk α_mod_G ⁻¹' U
state_after: case h.hA.h
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
g : G
x : α
⊢ x ∈ (fun x => g • x) ⁻¹' (Quotient.mk α_mod_G ⁻¹' U) ↔ x ∈ Quotient.mk α_mod_G ⁻¹' U

tactic: have : Quotient.mk α_mod_G (g • x) = Quotient.mk α_mod_G x := by
  apply Quotient.sound
  use g
state_before: case h.hA.h
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
g : G
x : α
⊢ x ∈ (fun x => g • x) ⁻¹' (Quotient.mk α_mod_G ⁻¹' U) ↔ x ∈ Quotient.mk α_mod_G ⁻¹' U
state_after: case h.hA.h
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
g : G
x : α
this : ⟦g • x⟧ = ⟦x⟧
⊢ x ∈ (fun x => g • x) ⁻¹' (Quotient.mk α_mod_G ⁻¹' U) ↔ x ∈ Quotient.mk α_mod_G ⁻¹' U

tactic: simp only [mem_preimage, this]
state_before: case h.hA.h
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
g : G
x : α
this : ⟦g • x⟧ = ⟦x⟧
⊢ x ∈ (fun x => g • x) ⁻¹' (Quotient.mk α_mod_G ⁻¹' U) ↔ x ∈ Quotient.mk α_mod_G ⁻¹' U
state_after: no goals

tactic: apply Quotient.sound
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
g : G
x : α
⊢ ⟦g • x⟧ = ⟦x⟧
state_after: case a
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
g : G
x : α
⊢ g • x ≈ x

tactic: use g
state_before: case a
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Group G
inst✝⁵ : MulAction G α
inst✝⁴ : MeasurableSpace α
μ : Measure α
inst✝³ : Countable G
inst✝² : MeasurableSpace G
s t : Set α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : MeasurableSMul G α
fund_dom_s : IsFundamentalDomain G s μ
fund_dom_t : IsFundamentalDomain G t μ
U : Set (Quotient α_mod_G)
meas_U : MeasurableSet U
g : G
x : α
⊢ g • x ≈ x
state_after: no goals