Theorem: IsClosed.vadd_left_of_isCompact
File: Mathlib/Topology/Algebra/Group/Basic.lean

Proof steps:
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
⊢ IsClosed (s • t)
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
this : ∀ x ∈ s • t, ∃ g ∈ s, g⁻¹ • x ∈ t
⊢ IsClosed (s • t)
tactic: have : ∀ x ∈ s • t, ∃ g ∈ s, g⁻¹ • x ∈ t := by
    rintro x ⟨g, hgs, y, hyt, rfl⟩
    refine ⟨g, hgs, ?_⟩
    rwa [inv_smul_smul]
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
this : ∀ x ∈ s • t, ∃ g ∈ s, g⁻¹ • x ∈ t
⊢ IsClosed (s • t)
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
⊢ IsClosed (s • t)
tactic: choose! f hf using this
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
⊢ IsClosed (s • t)
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
x : β
hx : x ∈ closure (s • t)
⊢ x ∈ s • t
tactic: refine isClosed_of_closure_subset (fun x hx ↦ ?_)
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
x : β
hx : x ∈ closure (s • t)
⊢ x ∈ s • t
state_after: case intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
x : β
hx : x ∈ closure (s • t)
u : Ultrafilter β
hust : s • t ∈ u
hux : ↑u ≤ 𝓝 x
⊢ x ∈ s • t
tactic: rcases mem_closure_iff_ultrafilter.mp hx with ⟨u, hust, hux⟩
state_before: case intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
x : β
hx : x ∈ closure (s • t)
u : Ultrafilter β
hust : s • t ∈ u
hux : ↑u ≤ 𝓝 x
⊢ x ∈ s • t
state_after: case intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
x : β
hx : x ∈ closure (s • t)
u : Ultrafilter β
hust : s • t ∈ u
hux : ↑u ≤ 𝓝 x
this : ↑(Ultrafilter.map f u) ≤ 𝓟 s
⊢ x ∈ s • t
tactic: have : Ultrafilter.map f u ≤ 𝓟 s :=
    calc Ultrafilter.map f u ≤ map f (𝓟 (s • t)) := map_mono (le_principal_iff.mpr hust)
      _ = 𝓟 (f '' (s • t)) := map_principal
      _ ≤ 𝓟 s := principal_mono.mpr (image_subset_iff.mpr (fun x hx ↦ (hf x hx).1))
state_before: case intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
x : β
hx : x ∈ closure (s • t)
u : Ultrafilter β
hust : s • t ∈ u
hux : ↑u ≤ 𝓝 x
this : ↑(Ultrafilter.map f u) ≤ 𝓟 s
⊢ x ∈ s • t
state_after: case intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
x : β
hx : x ∈ closure (s • t)
u : Ultrafilter β
hust : s • t ∈ u
hux : ↑u ≤ 𝓝 x
this : ↑(Ultrafilter.map f u) ≤ 𝓟 s
g : α
hg : g ∈ s
hug : ↑(Ultrafilter.map f u) ≤ 𝓝 g
⊢ x ∈ s • t
tactic: rcases hs.ultrafilter_le_nhds (Ultrafilter.map f u) this with ⟨g, hg, hug⟩
state_before: case intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
x : β
hx : x ∈ closure (s • t)
u : Ultrafilter β
hust : s • t ∈ u
hux : ↑u ≤ 𝓝 x
this : ↑(Ultrafilter.map f u) ≤ 𝓟 s
g : α
hg : g ∈ s
hug : ↑(Ultrafilter.map f u) ≤ 𝓝 g
⊢ x ∈ s • t
state_after: case intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
x : β
hx : x ∈ closure (s • t)
u : Ultrafilter β
hust : s • t ∈ u
hux : ↑u ≤ 𝓝 x
this : ↑(Ultrafilter.map f u) ≤ 𝓟 s
g : α
hg : g ∈ s
hug : ↑(Ultrafilter.map f u) ≤ 𝓝 g
⊢ g⁻¹ • x ∈ t
tactic: suffices g⁻¹ • x ∈ t from
    ⟨g, hg, g⁻¹ • x, this, smul_inv_smul _ _⟩
state_before: case intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : Group α
inst✝² : MulAction α β
inst✝¹ : ContinuousInv α
inst✝ : ContinuousSMul α β
s : Set α
t : Set β
ht : IsClosed t
hs : IsCompact s
f : β → α
hf : ∀ x ∈ s • t, f x ∈ s ∧ (f x)⁻¹ • x ∈ t
x : β
hx : x ∈ closure (s • t)
u : Ultrafilter β
hust : s • t ∈ u
hux : ↑u ≤ 𝓝 x
this : ↑(Ultrafilter.map f u) ≤ 𝓟 s
g : α
hg : g ∈ s
hug : ↑(Ultrafilter.map f u) ≤ 𝓝 g
⊢ g⁻¹ • x ∈ t
state_after: no goals
tactic: exact ht.mem_of_tendsto ((Tendsto.inv hug).smul hux)
    (Eventually.mono hust (fun y hy ↦ (hf y hy).2))