Theorem: ENNReal.tendsto_finset_prod_of_ne_top
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Type u_4
f : ι → α → ℝ≥0∞
x : Filter α
a : ι → ℝ≥0∞
s : Finset ι
h : ∀ i ∈ s, Tendsto (f i) x (𝓝 (a i))
h' : ∀ i ∈ s, a i ≠ ⊤
⊢ Tendsto (fun b => ∏ c ∈ s, f c b) x (𝓝 (∏ c ∈ s, a c))
state_after: case empty
α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_4
f : ι → α → ℝ≥0∞
x : Filter α
a : ι → ℝ≥0∞
h : ∀ i ∈ ∅, Tendsto (f i) x (𝓝 (a i))
h' : ∀ i ∈ ∅, a i ≠ ⊤
⊢ Tendsto (fun b => ∏ c ∈ ∅, f c b) x (𝓝 (∏ c ∈ ∅, a c))

case insert
α : Type u_1
β : Type u_2
γ : Type u_3
a✝¹ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Type u_4
f : ι → α → ℝ≥0∞
x : Filter α
a✝ : ι → ℝ≥0∞
a : ι
s : Finset ι
has : a ∉ s
IH :
  (∀ i ∈ s, Tendsto (f i) x (𝓝 (a✝ i))) → (∀ i ∈ s, a✝ i ≠ ⊤) → Tendsto (fun b => ∏ c ∈ s, f c b) x (𝓝 (∏ c ∈ s, a✝ c))
h : ∀ i ∈ insert a s, Tendsto (f i) x (𝓝 (a✝ i))
h' : ∀ i ∈ insert a s, a✝ i ≠ ⊤
⊢ Tendsto (fun b => ∏ c ∈ insert a s, f c b) x (𝓝 (∏ c ∈ insert a s, a✝ c))
tactic: induction' s using Finset.induction with a s has IH
state_before: case insert
α : Type u_1
β : Type u_2
γ : Type u_3
a✝¹ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Type u_4
f : ι → α → ℝ≥0∞
x : Filter α
a✝ : ι → ℝ≥0∞
a : ι
s : Finset ι
has : a ∉ s
IH :
  (∀ i ∈ s, Tendsto (f i) x (𝓝 (a✝ i))) → (∀ i ∈ s, a✝ i ≠ ⊤) → Tendsto (fun b => ∏ c ∈ s, f c b) x (𝓝 (∏ c ∈ s, a✝ c))
h : ∀ i ∈ insert a s, Tendsto (f i) x (𝓝 (a✝ i))
h' : ∀ i ∈ insert a s, a✝ i ≠ ⊤
⊢ Tendsto (fun b => ∏ c ∈ insert a s, f c b) x (𝓝 (∏ c ∈ insert a s, a✝ c))
state_after: case insert
α : Type u_1
β : Type u_2
γ : Type u_3
a✝¹ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Type u_4
f : ι → α → ℝ≥0∞
x : Filter α
a✝ : ι → ℝ≥0∞
a : ι
s : Finset ι
has : a ∉ s
IH :
  (∀ i ∈ s, Tendsto (f i) x (𝓝 (a✝ i))) → (∀ i ∈ s, a✝ i ≠ ⊤) → Tendsto (fun b => ∏ c ∈ s, f c b) x (𝓝 (∏ c ∈ s, a✝ c))
h : ∀ i ∈ insert a s, Tendsto (f i) x (𝓝 (a✝ i))
h' : ∀ i ∈ insert a s, a✝ i ≠ ⊤
⊢ Tendsto (fun b => f a b * ∏ c ∈ s, f c b) x (𝓝 (a✝ a * ∏ c ∈ s, a✝ c))
tactic: simp only [Finset.prod_insert has]
state_before: case insert
α : Type u_1
β : Type u_2
γ : Type u_3
a✝¹ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Type u_4
f : ι → α → ℝ≥0∞
x : Filter α
a✝ : ι → ℝ≥0∞
a : ι
s : Finset ι
has : a ∉ s
IH :
  (∀ i ∈ s, Tendsto (f i) x (𝓝 (a✝ i))) → (∀ i ∈ s, a✝ i ≠ ⊤) → Tendsto (fun b => ∏ c ∈ s, f c b) x (𝓝 (∏ c ∈ s, a✝ c))
h : ∀ i ∈ insert a s, Tendsto (f i) x (𝓝 (a✝ i))
h' : ∀ i ∈ insert a s, a✝ i ≠ ⊤
⊢ Tendsto (fun b => f a b * ∏ c ∈ s, f c b) x (𝓝 (a✝ a * ∏ c ∈ s, a✝ c))
state_after: case insert.ha
α : Type u_1
β : Type u_2
γ : Type u_3
a✝¹ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Type u_4
f : ι → α → ℝ≥0∞
x : Filter α
a✝ : ι → ℝ≥0∞
a : ι
s : Finset ι
has : a ∉ s
IH :
  (∀ i ∈ s, Tendsto (f i) x (𝓝 (a✝ i))) → (∀ i ∈ s, a✝ i ≠ ⊤) → Tendsto (fun b => ∏ c ∈ s, f c b) x (𝓝 (∏ c ∈ s, a✝ c))
h : ∀ i ∈ insert a s, Tendsto (f i) x (𝓝 (a✝ i))
h' : ∀ i ∈ insert a s, a✝ i ≠ ⊤
⊢ a✝ a ≠ 0 ∨ ∏ c ∈ s, a✝ c ≠ ⊤

case insert.hmb
α : Type u_1
β : Type u_2
γ : Type u_3
a✝¹ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Type u_4
f : ι → α → ℝ≥0∞
x : Filter α
a✝ : ι → ℝ≥0∞
a : ι
s : Finset ι
has : a ∉ s
IH :
  (∀ i ∈ s, Tendsto (f i) x (𝓝 (a✝ i))) → (∀ i ∈ s, a✝ i ≠ ⊤) → Tendsto (fun b => ∏ c ∈ s, f c b) x (𝓝 (∏ c ∈ s, a✝ c))
h : ∀ i ∈ insert a s, Tendsto (f i) x (𝓝 (a✝ i))
h' : ∀ i ∈ insert a s, a✝ i ≠ ⊤
⊢ Tendsto (fun a => ∏ c ∈ s, f c a) x (𝓝 (∏ c ∈ s, a✝ c))

case insert.hb
α : Type u_1
β : Type u_2
γ : Type u_3
a✝¹ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
ι : Type u_4
f : ι → α → ℝ≥0∞
x : Filter α
a✝ : ι → ℝ≥0∞
a : ι
s : Finset ι
has : a ∉ s
IH :
  (∀ i ∈ s, Tendsto (f i) x (𝓝 (a✝ i))) → (∀ i ∈ s, a✝ i ≠ ⊤) → Tendsto (fun b => ∏ c ∈ s, f c b) x (𝓝 (∏ c ∈ s, a✝ c))
h : ∀ i ∈ insert a s, Tendsto (f i) x (𝓝 (a✝ i))
h' : ∀ i ∈ insert a s, a✝ i ≠ ⊤
⊢ ∏ c ∈ s, a✝ c ≠ 0 ∨ a✝ a ≠ ⊤
tactic: apply Tendsto.mul (h _ (Finset.mem_insert_self _ _))