Theorem: EquicontinuousOn.isClosed_range_pi_of_uniformOnFun'
File: Mathlib/Topology/UniformSpace/Ascoli.lean

tactic: rcases isEmpty_or_nonempty α with _ | _
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
α : Type u_4
β : Type u_5
inst✝² : TopologicalSpace X
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
F : ι → X → α
G : ι → β → α
𝔖 : Set (Set X)
𝔖_compact : ∀ K ∈ 𝔖, IsCompact K
F_eqcont : ∀ K ∈ 𝔖, EquicontinuousOn F K
H : IsClosed (range (⇑(UniformOnFun.ofFun 𝔖) ∘ F))
⊢ IsClosed (range ((⋃₀ 𝔖).restrict ∘ F))
state_after: case inl
ι : Type u_1
X : Type u_2
Y : Type u_3
α : Type u_4
β : Type u_5
inst✝² : TopologicalSpace X
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
F : ι → X → α
G : ι → β → α
𝔖 : Set (Set X)
𝔖_compact : ∀ K ∈ 𝔖, IsCompact K
F_eqcont : ∀ K ∈ 𝔖, EquicontinuousOn F K
H : IsClosed (range (⇑(UniformOnFun.ofFun 𝔖) ∘ F))
h✝ : IsEmpty α
⊢ IsClosed (range ((⋃₀ 𝔖).restrict ∘ F))

case inr
ι : Type u_1
X : Type u_2
Y : Type u_3
α : Type u_4
β : Type u_5
inst✝² : TopologicalSpace X
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
F : ι → X → α
G : ι → β → α
𝔖 : Set (Set X)
𝔖_compact : ∀ K ∈ 𝔖, IsCompact K
F_eqcont : ∀ K ∈ 𝔖, EquicontinuousOn F K
H : IsClosed (range (⇑(UniformOnFun.ofFun 𝔖) ∘ F))
h✝ : Nonempty α
⊢ IsClosed (range ((⋃₀ 𝔖).restrict ∘ F))

tactic: simp_rw [isClosed_iff_clusterPt, ← Filter.map_top, ← mapClusterPt_def,
  mapClusterPt_iff_ultrafilter, range_comp, Subtype.coe_injective.surjective_comp_right.forall,
  ← restrict_eq, ← EquicontinuousOn.tendsto_uniformOnFun_iff_pi' 𝔖_compact F_eqcont]
state_before: case inr
ι : Type u_1
X : Type u_2
Y : Type u_3
α : Type u_4
β : Type u_5
inst✝² : TopologicalSpace X
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
F : ι → X → α
G : ι → β → α
𝔖 : Set (Set X)
𝔖_compact : ∀ K ∈ 𝔖, IsCompact K
F_eqcont : ∀ K ∈ 𝔖, EquicontinuousOn F K
H : IsClosed (range (⇑(UniformOnFun.ofFun 𝔖) ∘ F))
h✝ : Nonempty α
⊢ IsClosed (range ((⋃₀ 𝔖).restrict ∘ F))
state_after: case inr
ι : Type u_1
X : Type u_2
Y : Type u_3
α : Type u_4
β : Type u_5
inst✝² : TopologicalSpace X
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
F : ι → X → α
G : ι → β → α
𝔖 : Set (Set X)
𝔖_compact : ∀ K ∈ 𝔖, IsCompact K
F_eqcont : ∀ K ∈ 𝔖, EquicontinuousOn F K
H : IsClosed (range (⇑(UniformOnFun.ofFun 𝔖) ∘ F))
h✝ : Nonempty α
⊢ ∀ (x : X → α),
    (∃ U, ↑U ≤ ⊤ ∧ Tendsto (⇑(UniformOnFun.ofFun 𝔖) ∘ F) (↑U) (𝓝 ((UniformOnFun.ofFun 𝔖) x))) →
      (⋃₀ 𝔖).restrict x ∈ (⋃₀ 𝔖).restrict '' range F

tactic: exact fun f ⟨u, _, hu⟩ ↦ mem_image_of_mem _ <| H.mem_of_tendsto hu <|
  eventually_of_forall mem_range_self
state_before: case inr
ι : Type u_1
X : Type u_2
Y : Type u_3
α : Type u_4
β : Type u_5
inst✝² : TopologicalSpace X
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
F : ι → X → α
G : ι → β → α
𝔖 : Set (Set X)
𝔖_compact : ∀ K ∈ 𝔖, IsCompact K
F_eqcont : ∀ K ∈ 𝔖, EquicontinuousOn F K
H : IsClosed (range (⇑(UniformOnFun.ofFun 𝔖) ∘ F))
h✝ : Nonempty α
⊢ ∀ (x : X → α),
    (∃ U, ↑U ≤ ⊤ ∧ Tendsto (⇑(UniformOnFun.ofFun 𝔖) ∘ F) (↑U) (𝓝 ((UniformOnFun.ofFun 𝔖) x))) →
      (⋃₀ 𝔖).restrict x ∈ (⋃₀ 𝔖).restrict '' range F
state_after: no goals

tactic: simp [isClosed_discrete]
state_before: case inl
ι : Type u_1
X : Type u_2
Y : Type u_3
α : Type u_4
β : Type u_5
inst✝² : TopologicalSpace X
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
F : ι → X → α
G : ι → β → α
𝔖 : Set (Set X)
𝔖_compact : ∀ K ∈ 𝔖, IsCompact K
F_eqcont : ∀ K ∈ 𝔖, EquicontinuousOn F K
H : IsClosed (range (⇑(UniformOnFun.ofFun 𝔖) ∘ F))
h✝ : IsEmpty α
⊢ IsClosed (range ((⋃₀ 𝔖).restrict ∘ F))
state_after: no goals