Theorem: MeasureTheory.AddQuotientMeasureEqMeasurePreimage.isFiniteMeasure_quotient
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

Proof steps:
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 α
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
hasFun : HasFundamentalDomain G α ν
h : covolume G α ν ≠ ⊤
⊢ IsFiniteMeasure μ
state_after: case 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 α
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
hasFun : HasFundamentalDomain G α ν
h : covolume G α ν ≠ ⊤
𝓕 : Set α
h𝓕 : IsFundamentalDomain G 𝓕 ν
⊢ IsFiniteMeasure μ
tactic: obtain ⟨𝓕, h𝓕⟩ := hasFun.ExistsIsFundamentalDomain
state_before: case 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 α
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
hasFun : HasFundamentalDomain G α ν
h : covolume G α ν ≠ ⊤
𝓕 : Set α
h𝓕 : IsFundamentalDomain G 𝓕 ν
⊢ IsFiniteMeasure μ
state_after: case 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 α
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
hasFun : HasFundamentalDomain G α ν
h : covolume G α ν ≠ ⊤
𝓕 : Set α
h𝓕 : IsFundamentalDomain G 𝓕 ν
⊢ IsFiniteMeasure (Measure.map (Quotient.mk α_mod_G) (ν.restrict 𝓕))
tactic: rw [h𝓕.projection_respects_measure (μ := μ)]
state_before: case 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 α
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
hasFun : HasFundamentalDomain G α ν
h : covolume G α ν ≠ ⊤
𝓕 : Set α
h𝓕 : IsFundamentalDomain G 𝓕 ν
⊢ IsFiniteMeasure (Measure.map (Quotient.mk α_mod_G) (ν.restrict 𝓕))
state_after: case 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 α
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
hasFun : HasFundamentalDomain G α ν
h : covolume G α ν ≠ ⊤
𝓕 : Set α
h𝓕 : IsFundamentalDomain G 𝓕 ν
this : Fact (ν 𝓕 < ⊤)
⊢ IsFiniteMeasure (Measure.map (Quotient.mk α_mod_G) (ν.restrict 𝓕))
tactic: have : Fact (ν 𝓕 < ∞) := by
    apply Fact.mk
    convert Ne.lt_top h
    exact (h𝓕.covolume_eq_volume ν).symm
state_before: case 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 α
μ : Measure (Quotient α_mod_G)
inst✝ : QuotientMeasureEqMeasurePreimage ν μ
hasFun : HasFundamentalDomain G α ν
h : covolume G α ν ≠ ⊤
𝓕 : Set α
h𝓕 : IsFundamentalDomain G 𝓕 ν
this : Fact (ν 𝓕 < ⊤)
⊢ IsFiniteMeasure (Measure.map (Quotient.mk α_mod_G) (ν.restrict 𝓕))
state_after: no goals
tactic: infer_instance