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

tactic: intro U hU
state_before: ι : Type ?u.136107
κ : Type ?u.136110
X : Type ?u.136113
Y : Type u_1
Z : Type ?u.136119
α : Type u_2
β : Type u_3
γ : Type ?u.136128
𝓕 : Type ?u.136131
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → β → α
hA : UniformEquicontinuous (u ∘ Subtype.val)
hu : Continuous u
⊢ UniformEquicontinuous (u ∘ Subtype.val)

tactic: rcases mem_uniformity_isClosed hU with ⟨V, hV, hVclosed, hVU⟩
state_before: ι : Type ?u.136107
κ : Type ?u.136110
X : Type ?u.136113
Y : Type u_1
Z : Type ?u.136119
α : Type u_2
β : Type u_3
γ : Type ?u.136128
𝓕 : Type ?u.136131
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → β → α
hA : UniformEquicontinuous (u ∘ Subtype.val)
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
⊢ ∀ᶠ (xy : β × β) in 𝓤 β, ∀ (i : ↑(closure A)), ((u ∘ Subtype.val) i xy.fst, (u ∘ Subtype.val) i xy.snd) ∈ U

tactic: filter_upwards [hA V hV]
state_before: case intro.intro.intro
ι : Type ?u.136107
κ : Type ?u.136110
X : Type ?u.136113
Y : Type u_1
Z : Type ?u.136119
α : Type u_2
β : Type u_3
γ : Type ?u.136128
𝓕 : Type ?u.136131
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → β → α
hA : UniformEquicontinuous (u ∘ Subtype.val)
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
⊢ ∀ᶠ (xy : β × β) in 𝓤 β, ∀ (i : ↑(closure A)), ((u ∘ Subtype.val) i xy.fst, (u ∘ Subtype.val) i xy.snd) ∈ U

tactic: rintro ⟨x, y⟩ hxy
state_before: case h
ι : Type ?u.136107
κ : Type ?u.136110
X : Type ?u.136113
Y : Type u_1
Z : Type ?u.136119
α : Type u_2
β : Type u_3
γ : Type ?u.136128
𝓕 : Type ?u.136131
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → β → α
hA : UniformEquicontinuous (u ∘ Subtype.val)
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
⊢ ∀ (a : β × β),
    (∀ (i : ↑A), ((u ∘ Subtype.val) i a.fst, (u ∘ Subtype.val) i a.snd) ∈ V) →
      ∀ (i : ↑(closure A)), ((u ∘ Subtype.val) i a.fst, (u ∘ Subtype.val) i a.snd) ∈ U

tactic: rw [SetCoe.forall] at *
state_before: case h.mk
ι : Type ?u.136107
κ : Type ?u.136110
X : Type ?u.136113
Y : Type u_1
Z : Type ?u.136119
α : Type u_2
β : Type u_3
γ : Type ?u.136128
𝓕 : Type ?u.136131
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → β → α
hA : UniformEquicontinuous (u ∘ Subtype.val)
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
x y : β
hxy : ∀ (i : ↑A), ((u ∘ Subtype.val) i (x, y).fst, (u ∘ Subtype.val) i (x, y).snd) ∈ V
⊢ ∀ (i : ↑(closure A)), ((u ∘ Subtype.val) i (x, y).fst, (u ∘ Subtype.val) i (x, y).snd) ∈ U

tactic: change A ⊆ (fun f => (u f x, u f y)) ⁻¹' V at hxy
state_before: case h.mk
ι : Type ?u.136107
κ : Type ?u.136110
X : Type ?u.136113
Y : Type u_1
Z : Type ?u.136119
α : Type u_2
β : Type u_3
γ : Type ?u.136128
𝓕 : Type ?u.136131
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → β → α
hA : UniformEquicontinuous (u ∘ Subtype.val)
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
x y : β
hxy :
  ∀ (x_1 : Y) (h : x_1 ∈ A),
    ((u ∘ Subtype.val) { val := x_1, property := h } (x, y).fst,
        (u ∘ Subtype.val) { val := x_1, property := h } (x, y).snd) ∈
      V
⊢ ∀ (x_1 : Y) (h : x_1 ∈ closure A),
    ((u ∘ Subtype.val) { val := x_1, property := h } (x, y).fst,
        (u ∘ Subtype.val) { val := x_1, property := h } (x, y).snd) ∈
      U

tactic: refine' (closure_minimal hxy <| hVclosed.preimage <| _).trans (preimage_mono hVU)
state_before: case h.mk
ι : Type ?u.136107
κ : Type ?u.136110
X : Type ?u.136113
Y : Type u_1
Z : Type ?u.136119
α : Type u_2
β : Type u_3
γ : Type ?u.136128
𝓕 : Type ?u.136131
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → β → α
hA : UniformEquicontinuous (u ∘ Subtype.val)
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
x y : β
hxy : A ⊆ (fun f => (u f x, u f y)) ⁻¹' V
⊢ ∀ (x_1 : Y) (h : x_1 ∈ closure A),
    ((u ∘ Subtype.val) { val := x_1, property := h } (x, y).fst,
        (u ∘ Subtype.val) { val := x_1, property := h } (x, y).snd) ∈
      U

tactic: exact Continuous.prod_mk ((continuous_apply x).comp hu) ((continuous_apply y).comp hu)
state_before: case h.mk
ι : Type ?u.136107
κ : Type ?u.136110
X : Type ?u.136113
Y : Type u_1
Z : Type ?u.136119
α : Type u_2
β : Type u_3
γ : Type ?u.136128
𝓕 : Type ?u.136131
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
A : Set Y
u : Y → β → α
hA : UniformEquicontinuous (u ∘ Subtype.val)
hu : Continuous u
U : Set (α × α)
hU : U ∈ 𝓤 α
V : Set (α × α)
hV : V ∈ 𝓤 α
hVclosed : IsClosed V
hVU : V ⊆ U
x y : β
hxy : A ⊆ (fun f => (u f x, u f y)) ⁻¹' V
⊢ Continuous fun f => (u f x, u f y)