Theorem: Equicontinuous.tendsto_uniformFun_iff_pi
File: Mathlib/Topology/UniformSpace/Ascoli.lean

tactic: rcases ℱ.eq_or_neBot with rfl | ℱ_ne
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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f)) ↔ Tendsto F ℱ (𝓝 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
f : X → α
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ⊥ (𝓝 (UniformFun.ofFun f)) ↔ Tendsto F ⊥ (𝓝 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f)) ↔ Tendsto F ℱ (𝓝 f)

tactic: constructor <;> intro H
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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f)) ↔ Tendsto F ℱ (𝓝 f)
state_after: case inr.mp
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))
⊢ Tendsto F ℱ (𝓝 f)

case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))

tactic: simp
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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
f : X → α
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ⊥ (𝓝 (UniformFun.ofFun f)) ↔ Tendsto F ⊥ (𝓝 f)
state_after: no goals

tactic: exact UniformFun.uniformContinuous_toFun.continuous.tendsto _|>.comp H
state_before: case inr.mp
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))
⊢ Tendsto F ℱ (𝓝 f)
state_after: no goals

tactic: set S : Set (X → α) := closure (range F)
state_before: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))
state_after: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))

tactic: set 𝒢 : Filter S := comap (↑) (map F ℱ)
state_before: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))
state_after: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))

tactic: have hS : S.Equicontinuous := closure' (by rwa [equicontinuous_iff_range] at F_eqcont)
  continuous_id
state_before: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))
state_after: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))

tactic: have ind : Inducing (UniformFun.ofFun ∘ (↑) : S → X →ᵤ α) :=
  hS.inducing_uniformFun_iff_pi.mpr ⟨rfl⟩
state_before: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))
state_after: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
ind : Inducing (⇑UniformFun.ofFun ∘ Subtype.val)
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))

tactic: have f_mem : f ∈ S := mem_closure_of_tendsto H range_mem_map
state_before: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
ind : Inducing (⇑UniformFun.ofFun ∘ Subtype.val)
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))
state_after: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
ind : Inducing (⇑UniformFun.ofFun ∘ Subtype.val)
f_mem : f ∈ S
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))

tactic: have h𝒢ℱ : map (↑) 𝒢 = map F ℱ := Filter.map_comap_of_mem
  (Subtype.range_coe ▸ mem_of_superset range_mem_map subset_closure)
state_before: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
ind : Inducing (⇑UniformFun.ofFun ∘ Subtype.val)
f_mem : f ∈ S
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))
state_after: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
ind : Inducing (⇑UniformFun.ofFun ∘ Subtype.val)
f_mem : f ∈ S
h𝒢ℱ : map Subtype.val 𝒢 = map F ℱ
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))

tactic: have H' : Tendsto id 𝒢 (𝓝 ⟨f, f_mem⟩) := by
  rwa [tendsto_id', nhds_induced, ← map_le_iff_le_comap, h𝒢ℱ]
state_before: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
ind : Inducing (⇑UniformFun.ofFun ∘ Subtype.val)
f_mem : f ∈ S
h𝒢ℱ : map Subtype.val 𝒢 = map F ℱ
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))
state_after: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
ind : Inducing (⇑UniformFun.ofFun ∘ Subtype.val)
f_mem : f ∈ S
h𝒢ℱ : map Subtype.val 𝒢 = map F ℱ
H' : Tendsto id 𝒢 (𝓝 ⟨f, f_mem⟩)
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))

tactic: rwa [ind.tendsto_nhds_iff, comp_id, ← tendsto_map'_iff, h𝒢ℱ] at H'
state_before: case inr.mpr
ι : 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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
ind : Inducing (⇑UniformFun.ofFun ∘ Subtype.val)
f_mem : f ∈ S
h𝒢ℱ : map Subtype.val 𝒢 = map F ℱ
H' : Tendsto id 𝒢 (𝓝 ⟨f, f_mem⟩)
⊢ Tendsto (⇑UniformFun.ofFun ∘ F) ℱ (𝓝 (UniformFun.ofFun f))
state_after: no goals

tactic: rwa [equicontinuous_iff_range] at F_eqcont
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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
⊢ Equicontinuous (id ∘ Subtype.val)
state_after: no goals

tactic: rwa [tendsto_id', nhds_induced, ← map_le_iff_le_comap, h𝒢ℱ]
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 : ι → β → α
inst✝ : CompactSpace X
F_eqcont : Equicontinuous F
ℱ : Filter ι
f : X → α
ℱ_ne : ℱ.NeBot
H : Tendsto F ℱ (𝓝 f)
S : Set (X → α) := closure (range F)
𝒢 : Filter ↑S := comap Subtype.val (map F ℱ)
hS : S.Equicontinuous
ind : Inducing (⇑UniformFun.ofFun ∘ Subtype.val)
f_mem : f ∈ S
h𝒢ℱ : map Subtype.val 𝒢 = map F ℱ
⊢ Tendsto id 𝒢 (𝓝 ⟨f, f_mem⟩)
state_after: no goals