Theorem: tendsto_tsum_compl_atTop_zero
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: by_cases H : Summable f
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
⊢ Tendsto (fun s => ∑' (b : { x // ¬x ∈ s }), f ↑b) atTop (𝓝 0)

tactic: intro e he
state_before: case pos
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
H : Summable f
⊢ Tendsto (fun s => ∑' (b : { x // ¬x ∈ s }), f ↑b) atTop (𝓝 0)

tactic: rcases exists_mem_nhds_isClosed_subset he with ⟨o, ho, o_closed, oe⟩
state_before: case pos
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
⊢ e ∈ Filter.map (fun s => ∑' (b : { x // ¬x ∈ s }), f ↑b) atTop

tactic: simp only [le_eq_subset, Set.mem_preimage, mem_atTop_sets, Filter.mem_map, ge_iff_le]
state_before: case pos.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
⊢ e ∈ Filter.map (fun s => ∑' (b : { x // ¬x ∈ s }), f ↑b) atTop

tactic: obtain ⟨s, hs⟩ : ∃ s : Finset β, ∀ t : Finset β, Disjoint t s → (∑ b : β in t, f b) ∈ o :=
  cauchySeq_finset_iff_vanishing.1 (Tendsto.cauchySeq H.hasSum) o ho
state_before: case pos.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
⊢ ∃ a, ∀ (b : Finset β), a ⊆ b → (∑' (b_1 : { x // ¬x ∈ b }), f ↑b_1) ∈ e

tactic: refine' ⟨s, fun a sa => oe _⟩
state_before: case pos.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
⊢ ∃ a, ∀ (b : Finset β), a ⊆ b → (∑' (b_1 : { x // ¬x ∈ b }), f ↑b_1) ∈ e

tactic: have A : Summable fun b : { x // x ∉ a } => f b := a.summable_compl_iff.2 H
state_before: case pos.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a✝ a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
a : Finset β
sa : s ⊆ a
⊢ (∑' (b : { x // ¬x ∈ a }), f ↑b) ∈ o

tactic: refine' IsClosed.mem_of_tendsto o_closed A.hasSum (eventually_of_forall fun b => _)
state_before: case pos.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a✝ a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
a : Finset β
sa : s ⊆ a
A : Summable fun b => f ↑b
⊢ (∑' (b : { x // ¬x ∈ a }), f ↑b) ∈ o

tactic: have : Disjoint (Finset.image (fun i : { x // x ∉ a } => (i : β)) b) s := by
  refine' disjoint_left.2 fun i hi his => _
  rcases mem_image.1 hi with ⟨i', _, rfl⟩
  exact i'.2 (sa his)
state_before: case pos.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a✝ a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
a : Finset β
sa : s ⊆ a
A : Summable fun b => f ↑b
b : Finset { x // ¬x ∈ a }
⊢ ∑ b in b, (fun b => f ↑b) b ∈ o

tactic: convert hs _ this using 1
state_before: case pos.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a✝ a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
a : Finset β
sa : s ⊆ a
A : Summable fun b => f ↑b
b : Finset { x // ¬x ∈ a }
this : Disjoint (image (fun i => ↑i) b) s
⊢ ∑ b in b, (fun b => f ↑b) b ∈ o

tactic: rw [sum_image]
state_before: case h.e'_4
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a✝ a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
a : Finset β
sa : s ⊆ a
A : Summable fun b => f ↑b
b : Finset { x // ¬x ∈ a }
this : Disjoint (image (fun i => ↑i) b) s
⊢ ∑ b in b, (fun b => f ↑b) b = ∑ b in image (fun i => ↑i) b, f b

tactic: intro i _ j _ hij
state_before: case h.e'_4
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a✝ a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
a : Finset β
sa : s ⊆ a
A : Summable fun b => f ↑b
b : Finset { x // ¬x ∈ a }
this : Disjoint (image (fun i => ↑i) b) s
⊢ ∀ (x : { x // ¬x ∈ a }), x ∈ b → ∀ (y : { x // ¬x ∈ a }), y ∈ b → ↑x = ↑y → x = y

tactic: exact Subtype.ext hij
state_before: case h.e'_4
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a✝² a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
a : Finset β
sa : s ⊆ a
A : Summable fun b => f ↑b
b : Finset { x // ¬x ∈ a }
this : Disjoint (image (fun i => ↑i) b) s
i : { x // ¬x ∈ a }
a✝¹ : i ∈ b
j : { x // ¬x ∈ a }
a✝ : j ∈ b
hij : ↑i = ↑j
⊢ i = j

tactic: refine' disjoint_left.2 fun i hi his => _
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a✝ a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
a : Finset β
sa : s ⊆ a
A : Summable fun b => f ↑b
b : Finset { x // ¬x ∈ a }
⊢ Disjoint (image (fun i => ↑i) b) s

tactic: rcases mem_image.1 hi with ⟨i', _, rfl⟩
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a✝ a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
a : Finset β
sa : s ⊆ a
A : Summable fun b => f ↑b
b : Finset { x // ¬x ∈ a }
i : β
hi : i ∈ image (fun i => ↑i) b
his : i ∈ s
⊢ False

tactic: exact i'.2 (sa his)
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a✝ a₁ a₂ : α
f : β → α
H : Summable f
e : Set α
he : e ∈ 𝓝 0
o : Set α
ho : o ∈ 𝓝 0
o_closed : IsClosed o
oe : o ⊆ e
s : Finset β
hs : ∀ (t : Finset β), Disjoint t s → ∑ b in t, f b ∈ o
a : Finset β
sa : s ⊆ a
A : Summable fun b => f ↑b
b : Finset { x // ¬x ∈ a }
i' : { x // ¬x ∈ a }
left✝ : i' ∈ b
hi : ↑i' ∈ image (fun i => ↑i) b
his : ↑i' ∈ s
⊢ False

tactic: convert tendsto_const_nhds (α := α) (β := Finset β) (f := atTop) (a := 0)
state_before: case neg
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
H : ¬Summable f
⊢ Tendsto (fun s => ∑' (b : { x // ¬x ∈ s }), f ↑b) atTop (𝓝 0)

tactic: apply tsum_eq_zero_of_not_summable
state_before: case h.e'_3.h
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
H : ¬Summable f
x✝ : Finset β
⊢ (∑' (b : { x // ¬x ∈ x✝ }), f ↑b) = 0

tactic: rwa [Finset.summable_compl_iff]
state_before: case h.e'_3.h.h
α : Type u_2
β : Type u_1
γ : Type ?u.676328
δ : Type ?u.676331
inst✝² : AddCommGroup α
inst✝¹ : UniformSpace α
inst✝ : UniformAddGroup α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
H : ¬Summable f
x✝ : Finset β
⊢ ¬Summable fun b => f ↑b