Theorem: EquicontinuousAt.closure'
File: Mathlib/Topology/UniformSpace/Equicontinuity.lean

tactic: intro U hU
state_before: ι : Type ?u.131779
κ : Type ?u.131782
X : Type u_2
Y : Type u_1
Z : Type ?u.131791
α : Type u_3
β : Type ?u.131797
γ : Type ?u.131800
𝓕 : Type ?u.131803
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → X → α
x₀ : X
hA : EquicontinuousAt (u ∘ Subtype.val) x₀
hu : Continuous u
⊢ EquicontinuousAt (u ∘ Subtype.val) x₀

tactic: rcases mem_uniformity_isClosed hU with ⟨V, hV, hVclosed, hVU⟩
state_before: ι : Type ?u.131779
κ : Type ?u.131782
X : Type u_2
Y : Type u_1
Z : Type ?u.131791
α : Type u_3
β : Type ?u.131797
γ : Type ?u.131800
𝓕 : Type ?u.131803
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → X → α
x₀ : X
hA : EquicontinuousAt (u ∘ Subtype.val) x₀
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
⊢ ∀ᶠ (x : X) in 𝓝 x₀, ∀ (i : ↑(closure A)), ((u ∘ Subtype.val) i x₀, (u ∘ Subtype.val) i x) ∈ U

tactic: filter_upwards [hA V hV]with x hx
state_before: case intro.intro.intro
ι : Type ?u.131779
κ : Type ?u.131782
X : Type u_2
Y : Type u_1
Z : Type ?u.131791
α : Type u_3
β : Type ?u.131797
γ : Type ?u.131800
𝓕 : Type ?u.131803
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → X → α
x₀ : X
hA : EquicontinuousAt (u ∘ Subtype.val) x₀
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
⊢ ∀ᶠ (x : X) in 𝓝 x₀, ∀ (i : ↑(closure A)), ((u ∘ Subtype.val) i x₀, (u ∘ Subtype.val) i x) ∈ U

tactic: rw [SetCoe.forall] at *
state_before: case h
ι : Type ?u.131779
κ : Type ?u.131782
X : Type u_2
Y : Type u_1
Z : Type ?u.131791
α : Type u_3
β : Type ?u.131797
γ : Type ?u.131800
𝓕 : Type ?u.131803
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → X → α
x₀ : X
hA : EquicontinuousAt (u ∘ Subtype.val) x₀
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
x : X
hx : ∀ (i : ↑A), ((u ∘ Subtype.val) i x₀, (u ∘ Subtype.val) i x) ∈ V
⊢ ∀ (i : ↑(closure A)), ((u ∘ Subtype.val) i x₀, (u ∘ Subtype.val) i x) ∈ U

tactic: change A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V at hx
state_before: case h
ι : Type ?u.131779
κ : Type ?u.131782
X : Type u_2
Y : Type u_1
Z : Type ?u.131791
α : Type u_3
β : Type ?u.131797
γ : Type ?u.131800
𝓕 : Type ?u.131803
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → X → α
x₀ : X
hA : EquicontinuousAt (u ∘ Subtype.val) x₀
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
x : X
hx :
  ∀ (x_1 : Y) (h : x_1 ∈ A),
    ((u ∘ Subtype.val) { val := x_1, property := h } x₀, (u ∘ Subtype.val) { val := x_1, property := h } x) ∈ V
⊢ ∀ (x_1 : Y) (h : x_1 ∈ closure A),
    ((u ∘ Subtype.val) { val := x_1, property := h } x₀, (u ∘ Subtype.val) { val := x_1, property := h } x) ∈ U

tactic: refine' (closure_minimal hx <| hVclosed.preimage <| _).trans (preimage_mono hVU)
state_before: case h
ι : Type ?u.131779
κ : Type ?u.131782
X : Type u_2
Y : Type u_1
Z : Type ?u.131791
α : Type u_3
β : Type ?u.131797
γ : Type ?u.131800
𝓕 : Type ?u.131803
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → X → α
x₀ : X
hA : EquicontinuousAt (u ∘ Subtype.val) x₀
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
x : X
hx : A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V
⊢ ∀ (x_1 : Y) (h : x_1 ∈ closure A),
    ((u ∘ Subtype.val) { val := x_1, property := h } x₀, (u ∘ Subtype.val) { val := x_1, property := h } x) ∈ U

tactic: exact Continuous.prod_mk ((continuous_apply x₀).comp hu) ((continuous_apply x).comp hu)
state_before: case h
ι : Type ?u.131779
κ : Type ?u.131782
X : Type u_2
Y : Type u_1
Z : Type ?u.131791
α : Type u_3
β : Type ?u.131797
γ : Type ?u.131800
𝓕 : Type ?u.131803
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → X → α
x₀ : X
hA : EquicontinuousAt (u ∘ Subtype.val) x₀
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
x : X
hx : A ⊆ (fun f => (u f x₀, u f x)) ⁻¹' V
⊢ Continuous fun f => (u f x₀, u f x)