Theorem: MeasureTheory.IsFundamentalDomain.fundamentalInterior
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✝⁶ : Countable G
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
inst✝³ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsFundamentalDomain G s μ
inst✝² : MeasurableSpace G
inst✝¹ : MeasurableSMul G α
inst✝ : SMulInvariantMeasure G α μ
⊢ ∀ᵐ (x : α) ∂μ, ∃ g, g • x ∈ fundamentalInterior G s
state_after: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Countable G
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
inst✝³ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsFundamentalDomain G s μ
inst✝² : MeasurableSpace G
inst✝¹ : MeasurableSMul G α
inst✝ : SMulInvariantMeasure G α μ
⊢ μ (⋃ i, i⁻¹ • fundamentalInterior G s)ᶜ = 0
tactic: simp_rw [ae_iff, not_exists, ← mem_inv_smul_set_iff, setOf_forall, ← compl_setOf,
      setOf_mem_eq, ← compl_iUnion]
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Countable G
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
inst✝³ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsFundamentalDomain G s μ
inst✝² : MeasurableSpace G
inst✝¹ : MeasurableSMul G α
inst✝ : SMulInvariantMeasure G α μ
⊢ μ (⋃ i, i⁻¹ • fundamentalInterior G s)ᶜ = 0
state_after: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Countable G
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
inst✝³ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsFundamentalDomain G s μ
inst✝² : MeasurableSpace G
inst✝¹ : MeasurableSMul G α
inst✝ : SMulInvariantMeasure G α μ
this : (⋃ g, g⁻¹ • s) \ ⋃ g, g⁻¹ • fundamentalFrontier G s ⊆ ⋃ g, g⁻¹ • fundamentalInterior G s
⊢ μ (⋃ i, i⁻¹ • fundamentalInterior G s)ᶜ = 0
tactic: have :
      ((⋃ g : G, g⁻¹ • s) \ ⋃ g : G, g⁻¹ • fundamentalFrontier G s) ⊆
        ⋃ g : G, g⁻¹ • fundamentalInterior G s := by
      simp_rw [diff_subset_iff, ← iUnion_union_distrib, ← smul_set_union (α := G) (β := α),
        fundamentalFrontier_union_fundamentalInterior]; rfl
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Countable G
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
inst✝³ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsFundamentalDomain G s μ
inst✝² : MeasurableSpace G
inst✝¹ : MeasurableSMul G α
inst✝ : SMulInvariantMeasure G α μ
this : (⋃ g, g⁻¹ • s) \ ⋃ g, g⁻¹ • fundamentalFrontier G s ⊆ ⋃ g, g⁻¹ • fundamentalInterior G s
⊢ μ (⋃ i, i⁻¹ • fundamentalInterior G s)ᶜ = 0
state_after: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Countable G
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
inst✝³ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsFundamentalDomain G s μ
inst✝² : MeasurableSpace G
inst✝¹ : MeasurableSMul G α
inst✝ : SMulInvariantMeasure G α μ
this : (⋃ g, g⁻¹ • s) \ ⋃ g, g⁻¹ • fundamentalFrontier G s ⊆ ⋃ g, g⁻¹ • fundamentalInterior G s
⊢ μ.measureOf ((⋃ g, g⁻¹ • s) \ ⋃ g, g⁻¹ • fundamentalFrontier G s)ᶜ = ⊥
tactic: refine eq_bot_mono (μ.mono <| compl_subset_compl.2 this) ?_
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Countable G
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
inst✝³ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsFundamentalDomain G s μ
inst✝² : MeasurableSpace G
inst✝¹ : MeasurableSMul G α
inst✝ : SMulInvariantMeasure G α μ
this : (⋃ g, g⁻¹ • s) \ ⋃ g, g⁻¹ • fundamentalFrontier G s ⊆ ⋃ g, g⁻¹ • fundamentalInterior G s
⊢ μ.measureOf ((⋃ g, g⁻¹ • s) \ ⋃ g, g⁻¹ • fundamentalFrontier G s)ᶜ = ⊥
state_after: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Countable G
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
inst✝³ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsFundamentalDomain G s μ
inst✝² : MeasurableSpace G
inst✝¹ : MeasurableSMul G α
inst✝ : SMulInvariantMeasure G α μ
this : (⋃ g, g⁻¹ • s) \ ⋃ g, g⁻¹ • fundamentalFrontier G s ⊆ ⋃ g, g⁻¹ • fundamentalInterior G s
⊢ μ.measureOf ((⋃ g, g • fundamentalFrontier G s) ∪ {a | ∃ g, g • a ∈ s}ᶜ) = 0
tactic: simp only [iUnion_inv_smul, compl_sdiff, ENNReal.bot_eq_zero, himp_eq, sup_eq_union,
      @iUnion_smul_eq_setOf_exists _ _ _ _ s]
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝⁶ : Countable G
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
inst✝³ : MeasurableSpace α
μ : Measure α
s : Set α
hs : IsFundamentalDomain G s μ
inst✝² : MeasurableSpace G
inst✝¹ : MeasurableSMul G α
inst✝ : SMulInvariantMeasure G α μ
this : (⋃ g, g⁻¹ • s) \ ⋃ g, g⁻¹ • fundamentalFrontier G s ⊆ ⋃ g, g⁻¹ • fundamentalInterior G s
⊢ μ.measureOf ((⋃ g, g • fundamentalFrontier G s) ∪ {a | ∃ g, g • a ∈ s}ᶜ) = 0
state_after: no goals
tactic: exact measure_union_null
      (measure_iUnion_null fun _ => measure_smul_null hs.measure_fundamentalFrontier _) hs.ae_covers