Theorem: tendstoUniformlyOn_of_seq_tendstoUniformlyOn
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
h : ∀ (u : ℕ → ι), Tendsto u atTop l → TendstoUniformlyOn (fun n => F (u n)) f atTop s
⊢ TendstoUniformlyOn F f l s
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
h : ∀ (u : ℕ → ι), Tendsto u atTop l → TendstoUniformlyOn (fun n => F (u n)) f atTop s
⊢ ∀ (x : ℕ → ι × α), Tendsto x atTop (l ×ˢ 𝓟 s) → Tendsto ((fun q => (f q.2, F q.1 q.2)) ∘ x) atTop (𝓤 β)
tactic: rw [tendstoUniformlyOn_iff_tendsto, tendsto_iff_seq_tendsto]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
h : ∀ (u : ℕ → ι), Tendsto u atTop l → TendstoUniformlyOn (fun n => F (u n)) f atTop s
⊢ ∀ (x : ℕ → ι × α), Tendsto x atTop (l ×ˢ 𝓟 s) → Tendsto ((fun q => (f q.2, F q.1 q.2)) ∘ x) atTop (𝓤 β)
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
h : ∀ (u : ℕ → ι), Tendsto u atTop l → TendstoUniformlyOn (fun n => F (u n)) f atTop s
u : ℕ → ι × α
hu : Tendsto u atTop (l ×ˢ 𝓟 s)
⊢ Tendsto ((fun q => (f q.2, F q.1 q.2)) ∘ u) atTop (𝓤 β)
tactic: intro u hu
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
h : ∀ (u : ℕ → ι), Tendsto u atTop l → TendstoUniformlyOn (fun n => F (u n)) f atTop s
u : ℕ → ι × α
hu : Tendsto u atTop (l ×ˢ 𝓟 s)
⊢ Tendsto ((fun q => (f q.2, F q.1 q.2)) ∘ u) atTop (𝓤 β)
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
h : ∀ (u : ℕ → ι), Tendsto u atTop l → TendstoUniformlyOn (fun n => F (u n)) f atTop s
u : ℕ → ι × α
hu : Tendsto (fun n => (u n).1) atTop l ∧ Tendsto (fun n => (u n).2) atTop (𝓟 s)
⊢ Tendsto ((fun q => (f q.2, F q.1 q.2)) ∘ u) atTop (𝓤 β)
tactic: rw [tendsto_prod_iff'] at hu
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
h : ∀ (u : ℕ → ι), Tendsto u atTop l → TendstoUniformlyOn (fun n => F (u n)) f atTop s
u : ℕ → ι × α
hu : Tendsto (fun n => (u n).1) atTop l ∧ Tendsto (fun n => (u n).2) atTop (𝓟 s)
⊢ Tendsto ((fun q => (f q.2, F q.1 q.2)) ∘ u) atTop (𝓤 β)
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
u : ℕ → ι × α
hu : Tendsto (fun n => (u n).1) atTop l ∧ Tendsto (fun n => (u n).2) atTop (𝓟 s)
h : TendstoUniformlyOn (fun n => F (u n).1) f atTop s
⊢ Tendsto ((fun q => (f q.2, F q.1 q.2)) ∘ u) atTop (𝓤 β)
tactic: specialize h (fun n => (u n).fst) hu.1
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
u : ℕ → ι × α
hu : Tendsto (fun n => (u n).1) atTop l ∧ Tendsto (fun n => (u n).2) atTop (𝓟 s)
h : TendstoUniformlyOn (fun n => F (u n).1) f atTop s
⊢ Tendsto ((fun q => (f q.2, F q.1 q.2)) ∘ u) atTop (𝓤 β)
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
u : ℕ → ι × α
hu : Tendsto (fun n => (u n).1) atTop l ∧ Tendsto (fun n => (u n).2) atTop (𝓟 s)
h : Tendsto (fun q => (f q.2, F (u q.1).1 q.2)) (atTop ×ˢ 𝓟 s) (𝓤 β)
⊢ Tendsto ((fun q => (f q.2, F q.1 q.2)) ∘ u) atTop (𝓤 β)
tactic: rw [tendstoUniformlyOn_iff_tendsto] at h
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
inst✝ : l.IsCountablyGenerated
u : ℕ → ι × α
hu : Tendsto (fun n => (u n).1) atTop l ∧ Tendsto (fun n => (u n).2) atTop (𝓟 s)
h : Tendsto (fun q => (f q.2, F (u q.1).1 q.2)) (atTop ×ˢ 𝓟 s) (𝓤 β)
⊢ Tendsto ((fun q => (f q.2, F q.1 q.2)) ∘ u) atTop (𝓤 β)
state_after: no goals
tactic: exact h.comp (tendsto_id.prod_mk hu.2)