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

tactic: have : IsCompact (haarProduct (K₀ : Set G)) := by
  apply isCompact_univ_pi; intro K; apply isCompact_Icc
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
⊢ Set.Nonempty (haarProduct ↑K₀ ∩ ⋂ (V : OpenNhdsOf 1), clPrehaar (↑K₀) V)

tactic: refine' this.inter_iInter_nonempty (clPrehaar K₀) (fun s => isClosed_closure) fun t => _
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
⊢ Set.Nonempty (haarProduct ↑K₀ ∩ ⋂ (V : OpenNhdsOf 1), clPrehaar (↑K₀) V)

tactic: let V₀ := ⋂ V ∈ t, (V : OpenNhdsOf (1 : G)).carrier
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
⊢ Set.Nonempty (haarProduct ↑K₀ ∩ ⋂ (i : OpenNhdsOf 1) (_ : i ∈ t), clPrehaar (↑K₀) i)

tactic: have h1V₀ : IsOpen V₀ := by
  apply isOpen_biInter; apply Finset.finite_toSet; rintro ⟨⟨V, hV₁⟩, hV₂⟩ _; exact hV₁
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
⊢ Set.Nonempty (haarProduct ↑K₀ ∩ ⋂ (i : OpenNhdsOf 1) (_ : i ∈ t), clPrehaar (↑K₀) i)

tactic: have h2V₀ : (1 : G) ∈ V₀ := by simp only [mem_iInter]; rintro ⟨⟨V, hV₁⟩, hV₂⟩ _; exact hV₂
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
⊢ Set.Nonempty (haarProduct ↑K₀ ∩ ⋂ (i : OpenNhdsOf 1) (_ : i ∈ t), clPrehaar (↑K₀) i)

tactic: refine' ⟨prehaar K₀ V₀, _⟩
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
⊢ Set.Nonempty (haarProduct ↑K₀ ∩ ⋂ (i : OpenNhdsOf 1) (_ : i ∈ t), clPrehaar (↑K₀) i)

tactic: constructor
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
⊢ prehaar (↑K₀) V₀ ∈ haarProduct ↑K₀ ∩ ⋂ (i : OpenNhdsOf 1) (_ : i ∈ t), clPrehaar (↑K₀) i

tactic: apply isCompact_univ_pi
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
⊢ IsCompact (haarProduct ↑K₀)

tactic: intro K
state_before: case h
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
⊢ ∀ (i : Compacts G), IsCompact (Icc 0 ↑(index ↑i ↑K₀))

tactic: apply isCompact_Icc
state_before: case h
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
K : Compacts G
⊢ IsCompact (Icc 0 ↑(index ↑K ↑K₀))

tactic: apply isOpen_biInter
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
⊢ IsOpen V₀

tactic: apply Finset.finite_toSet
state_before: case hs
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
⊢ Set.Finite fun i => i ∈ t.val

case h
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
⊢ ∀ (i : OpenNhdsOf 1), (i ∈ fun i => i ∈ t.val) → IsOpen i.carrier

tactic: rintro ⟨⟨V, hV₁⟩, hV₂⟩ _
state_before: case h
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
⊢ ∀ (i : OpenNhdsOf 1), (i ∈ fun i => i ∈ t.val) → IsOpen i.carrier

tactic: exact hV₁
state_before: case h.mk.mk
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
V : Set G
hV₁ : IsOpen V
hV₂ : 1 ∈ { carrier := V, is_open' := hV₁ }.carrier
a✝ : { toOpens := { carrier := V, is_open' := hV₁ }, mem' := hV₂ } ∈ fun i => i ∈ t.val
⊢ IsOpen { toOpens := { carrier := V, is_open' := hV₁ }, mem' := hV₂ }.toOpens.carrier

tactic: simp only [mem_iInter]
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
⊢ 1 ∈ V₀

tactic: rintro ⟨⟨V, hV₁⟩, hV₂⟩ _
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
⊢ ∀ (i : OpenNhdsOf 1), i ∈ t → 1 ∈ i.carrier

tactic: exact hV₂
state_before: case mk.mk
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
V : Set G
hV₁ : IsOpen V
hV₂ : 1 ∈ { carrier := V, is_open' := hV₁ }.carrier
i✝ : { toOpens := { carrier := V, is_open' := hV₁ }, mem' := hV₂ } ∈ t
⊢ 1 ∈ { toOpens := { carrier := V, is_open' := hV₁ }, mem' := hV₂ }.toOpens.carrier

tactic: apply prehaar_mem_haarProduct K₀
state_before: case left
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
⊢ prehaar (↑K₀) V₀ ∈ haarProduct ↑K₀

tactic: use 1
state_before: case left
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
⊢ Set.Nonempty (interior V₀)

tactic: rwa [h1V₀.interior_eq]
state_before: case left
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
⊢ 1 ∈ interior V₀

tactic: simp only [mem_iInter]
state_before: case right
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
⊢ prehaar (↑K₀) V₀ ∈ ⋂ (i : OpenNhdsOf 1) (_ : i ∈ t), clPrehaar (↑K₀) i

tactic: rintro ⟨V, hV⟩ h2V
state_before: case right
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
⊢ ∀ (i : OpenNhdsOf 1), i ∈ t → prehaar (↑K₀) (⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier) ∈ clPrehaar (↑K₀) i

tactic: apply subset_closure
state_before: case right.mk
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
V : Opens G
hV : 1 ∈ V.carrier
h2V : { toOpens := V, mem' := hV } ∈ t
⊢ prehaar (↑K₀) (⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier) ∈ clPrehaar ↑K₀ { toOpens := V, mem' := hV }

tactic: apply mem_image_of_mem
state_before: case right.mk.a
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
V : Opens G
hV : 1 ∈ V.carrier
h2V : { toOpens := V, mem' := hV } ∈ t
⊢ prehaar (↑K₀) (⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier) ∈
    prehaar ↑K₀ '' {U | U ⊆ ↑{ toOpens := V, mem' := hV }.toOpens ∧ IsOpen U ∧ 1 ∈ U}

tactic: rw [mem_setOf_eq]
state_before: case right.mk.a.h
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
V : Opens G
hV : 1 ∈ V.carrier
h2V : { toOpens := V, mem' := hV } ∈ t
⊢ (⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier) ∈ {U | U ⊆ ↑{ toOpens := V, mem' := hV }.toOpens ∧ IsOpen U ∧ 1 ∈ U}

tactic: exact ⟨Subset.trans (iInter_subset _ ⟨V, hV⟩) (iInter_subset _ h2V), h1V₀, h2V₀⟩
state_before: case right.mk.a.h
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
this : IsCompact (haarProduct ↑K₀)
t : Finset (OpenNhdsOf 1)
V₀ : Set G := ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier
h1V₀ : IsOpen V₀
h2V₀ : 1 ∈ V₀
V : Opens G
hV : 1 ∈ V.carrier
h2V : { toOpens := V, mem' := hV } ∈ t
⊢ (⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier) ⊆ ↑{ toOpens := V, mem' := hV }.toOpens ∧
    IsOpen (⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier) ∧ 1 ∈ ⋂ (V : OpenNhdsOf 1) (_ : V ∈ t), V.carrier