Theorem: MeasureTheory.Measure.haar.mul_left_index_le
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

tactic: rcases index_elim hK hV with ⟨s, h1s, h2s⟩
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
⊢ index ((fun h => g * h) '' K) V ≤ index K V

tactic: rw [← h2s]
state_before: case intro.intro
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
⊢ index ((fun h => g * h) '' K) V ≤ index K V

tactic: apply Nat.sInf_le
state_before: case intro.intro
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
⊢ index ((fun h => g * h) '' K) V ≤ Finset.card s

tactic: rw [mem_image]
state_before: case intro.intro.hm
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
⊢ Finset.card s ∈ Finset.card '' {t | (fun h => g * h) '' K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' V}

tactic: refine' ⟨s.map (Equiv.mulRight g⁻¹).toEmbedding, _, Finset.card_map _⟩
state_before: case intro.intro.hm
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
⊢ ∃ x, x ∈ {t | (fun h => g * h) '' K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' V} ∧ Finset.card x = Finset.card s

tactic: simp only [mem_setOf_eq]
state_before: case intro.intro.hm
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
⊢ Finset.map (Equiv.toEmbedding (Equiv.mulRight g⁻¹)) s ∈
    {t | (fun h => g * h) '' K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' V}

tactic: refine' Subset.trans (image_subset _ h1s) _
state_before: case intro.intro.hm
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
⊢ (fun h => g * h) '' K ⊆
    ⋃ (g_1 : G) (_ : g_1 ∈ Finset.map (Equiv.toEmbedding (Equiv.mulRight g⁻¹)) s), (fun h => g_1 * h) ⁻¹' V

tactic: rintro _ ⟨g₁, ⟨_, ⟨g₂, rfl⟩, ⟨_, ⟨hg₂, rfl⟩, hg₁⟩⟩, rfl⟩
state_before: case intro.intro.hm
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
⊢ ((fun h => g * h) '' ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V) ⊆
    ⋃ (g_1 : G) (_ : g_1 ∈ Finset.map (Equiv.toEmbedding (Equiv.mulRight g⁻¹)) s), (fun h => g_1 * h) ⁻¹' V

tactic: simp only [mem_preimage] at hg₁
state_before: case intro.intro.hm.intro.intro.intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
g₁ g₂ : G
hg₂ : g₂ ∈ s
hg₁ : g₁ ∈ (fun h => (fun h => g₂ * h) ⁻¹' V) hg₂
⊢ (fun h => g * h) g₁ ∈
    ⋃ (g_1 : G) (_ : g_1 ∈ Finset.map (Equiv.toEmbedding (Equiv.mulRight g⁻¹)) s), (fun h => g_1 * h) ⁻¹' V

tactic: simp only [exists_prop, mem_iUnion, Finset.mem_map, Equiv.coe_mulRight,
  exists_exists_and_eq_and, mem_preimage, Equiv.toEmbedding_apply]
state_before: case intro.intro.hm.intro.intro.intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
g₁ g₂ : G
hg₂ : g₂ ∈ s
hg₁ : g₂ * g₁ ∈ V
⊢ (fun h => g * h) g₁ ∈
    ⋃ (g_1 : G) (_ : g_1 ∈ Finset.map (Equiv.toEmbedding (Equiv.mulRight g⁻¹)) s), (fun h => g_1 * h) ⁻¹' V

tactic: refine' ⟨_, hg₂, _⟩
state_before: case intro.intro.hm.intro.intro.intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
g₁ g₂ : G
hg₂ : g₂ ∈ s
hg₁ : g₂ * g₁ ∈ V
⊢ ∃ a, a ∈ s ∧ a * g⁻¹ * (g * g₁) ∈ V

tactic: simp only [mul_assoc, hg₁, inv_mul_cancel_left]
state_before: case intro.intro.hm.intro.intro.intro.intro.intro.intro.intro.intro
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K : Set G
hK : IsCompact K
V : Set G
hV : Set.Nonempty (interior V)
g : G
s : Finset G
h1s : K ⊆ ⋃ (g : G) (_ : g ∈ s), (fun h => g * h) ⁻¹' V
h2s : Finset.card s = index K V
g₁ g₂ : G
hg₂ : g₂ ∈ s
hg₁ : g₂ * g₁ ∈ V
⊢ g₂ * g⁻¹ * (g * g₁) ∈ V