Theorem: MeasureTheory.QuotientMeasureEqMeasurePreimage.sigmaFiniteQuotient
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

tactic: rw [sigmaFinite_iff]
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
⊢ SigmaFinite μ
state_after: 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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
⊢ Nonempty (μ.FiniteSpanningSetsIn univ)

tactic: obtain ⟨A, hA_meas, hA, hA'⟩ := Measure.toFiniteSpanningSetsIn (h := i)
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
⊢ Nonempty (μ.FiniteSpanningSetsIn univ)
state_after: case mk
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), A i ∈ {s | MeasurableSet s}
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
⊢ Nonempty (μ.FiniteSpanningSetsIn univ)

tactic: simp only [mem_setOf_eq] at hA_meas
state_before: case mk
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), A i ∈ {s | MeasurableSet s}
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
⊢ Nonempty (μ.FiniteSpanningSetsIn univ)
state_after: case mk
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
⊢ Nonempty (μ.FiniteSpanningSetsIn univ)

tactic: refine ⟨⟨fun n ↦ π '' (A n), by simp, fun n ↦ ?_, ?_⟩⟩
state_before: case mk
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
⊢ Nonempty (μ.FiniteSpanningSetsIn univ)
state_after: case mk.refine_1
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
⊢ μ ((fun n => Quotient.mk α_mod_G '' A n) n) < ⊤

case mk.refine_2
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
⊢ ⋃ i, (fun n => Quotient.mk α_mod_G '' A n) i = univ

tactic: simp
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
⊢ ∀ (i : ℕ), (fun n => Quotient.mk α_mod_G '' A n) i ∈ univ
state_after: no goals

tactic: obtain ⟨s, fund_dom_s⟩ := i'
state_before: case mk.refine_1
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
⊢ μ ((fun n => Quotient.mk α_mod_G '' A n) n) < ⊤
state_after: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
⊢ μ ((fun n => Quotient.mk α_mod_G '' A n) n) < ⊤

tactic: have : π ⁻¹' (π '' (A n)) = _ := MulAction.quotient_preimage_image_eq_union_mul (A n) (G := G)
state_before: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
⊢ μ ((fun n => Quotient.mk α_mod_G '' A n) n) < ⊤
state_after: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
⊢ μ ((fun n => Quotient.mk α_mod_G '' A n) n) < ⊤

tactic: have measπAn : MeasurableSet (π '' A n) := by
  let _ : Setoid α := α_mod_G
  rw [measurableSet_quotient, Quotient.mk''_eq_mk, this]
  apply MeasurableSet.iUnion
  exact fun g ↦ MeasurableSet.const_smul (hA_meas n) g
state_before: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
⊢ μ ((fun n => Quotient.mk α_mod_G '' A n) n) < ⊤
state_after: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
measπAn : MeasurableSet (Quotient.mk α_mod_G '' A n)
⊢ μ ((fun n => Quotient.mk α_mod_G '' A n) n) < ⊤

tactic: rw [fund_dom_s.projection_respects_measure_apply (μ := μ) measπAn, this, iUnion_inter]
state_before: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
measπAn : MeasurableSet (Quotient.mk α_mod_G '' A n)
⊢ μ ((fun n => Quotient.mk α_mod_G '' A n) n) < ⊤
state_after: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
measπAn : MeasurableSet (Quotient.mk α_mod_G '' A n)
⊢ ν (⋃ i, (fun x => i • x) '' A n ∩ s) < ⊤

tactic: refine lt_of_le_of_lt ?_ (hA n)
state_before: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
measπAn : MeasurableSet (Quotient.mk α_mod_G '' A n)
⊢ ν (⋃ i, (fun x => i • x) '' A n ∩ s) < ⊤
state_after: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
measπAn : MeasurableSet (Quotient.mk α_mod_G '' A n)
⊢ ν (⋃ i, (fun x => i • x) '' A n ∩ s) ≤ ν (A n)

tactic: rw [fund_dom_s.measure_eq_tsum (A n)]
state_before: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
measπAn : MeasurableSet (Quotient.mk α_mod_G '' A n)
⊢ ν (⋃ i, (fun x => i • x) '' A n ∩ s) ≤ ν (A n)
state_after: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
measπAn : MeasurableSet (Quotient.mk α_mod_G '' A n)
⊢ ν (⋃ i, (fun x => i • x) '' A n ∩ s) ≤ ∑' (g : G), ν (g • A n ∩ s)

tactic: exact measure_iUnion_le _
state_before: case mk.refine_1.mk.intro
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
measπAn : MeasurableSet (Quotient.mk α_mod_G '' A n)
⊢ ν (⋃ i, (fun x => i • x) '' A n ∩ s) ≤ ∑' (g : G), ν (g • A n ∩ s)
state_after: no goals

tactic: let _ : Setoid α := α_mod_G
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
⊢ MeasurableSet (Quotient.mk α_mod_G '' A n)
state_after: 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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
x✝ : Setoid α := α_mod_G
⊢ MeasurableSet (Quotient.mk α_mod_G '' A n)

tactic: rw [measurableSet_quotient, Quotient.mk''_eq_mk, this]
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
x✝ : Setoid α := α_mod_G
⊢ MeasurableSet (Quotient.mk α_mod_G '' A n)
state_after: 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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
x✝ : Setoid α := α_mod_G
⊢ MeasurableSet (⋃ g, (fun x => g • x) '' A n)

tactic: apply MeasurableSet.iUnion
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
x✝ : Setoid α := α_mod_G
⊢ MeasurableSet (⋃ g, (fun x => g • x) '' A n)
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
x✝ : Setoid α := α_mod_G
⊢ ∀ (b : G), MeasurableSet ((fun x => b • x) '' A n)

tactic: exact fun g ↦ MeasurableSet.const_smul (hA_meas n) g
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
n : ℕ
s : Set α
fund_dom_s : IsFundamentalDomain G s ν
this : Quotient.mk α_mod_G ⁻¹' (Quotient.mk α_mod_G '' A n) = ⋃ g, (fun x => g • x) '' A n
x✝ : Setoid α := α_mod_G
⊢ ∀ (b : G), MeasurableSet ((fun x => b • x) '' A n)
state_after: no goals

tactic: rw [← image_iUnion, hA']
state_before: case mk.refine_2
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
⊢ ⋃ i, (fun n => Quotient.mk α_mod_G '' A n) i = univ
state_after: case mk.refine_2
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
⊢ Quotient.mk α_mod_G '' univ = univ

tactic: refine image_univ_of_surjective (by convert surjective_quotient_mk' α)
state_before: case mk.refine_2
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
⊢ Quotient.mk α_mod_G '' univ = univ
state_after: no goals

tactic: convert surjective_quotient_mk' α
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
inst✝² : SMulInvariantMeasure G α ν
inst✝¹ : MeasurableSMul G α
i : SigmaFinite ν
i' : HasFundamentalDomain G α ν
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
A : ℕ → Set α
hA_meas : ∀ (i : ℕ), MeasurableSet (A i)
hA : ∀ (i : ℕ), ν (A i) < ⊤
hA' : ⋃ i, A i = univ
⊢ Surjective (Quotient.mk α_mod_G)
state_after: no goals