Theorem: cauchySeq_finset_of_norm_bounded_eventually
File: Mathlib/Analysis/Normed/Group/InfiniteSum.lean

tactic: refine' cauchySeq_finset_iff_vanishing_norm.2 fun ε hε => _
state_before: ι : Type u_1
α : Type ?u.3377
E : Type u_2
F : Type ?u.3383
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
⊢ CauchySeq fun s => ∑ i in s, f i

tactic: rcases summable_iff_vanishing_norm.1 hg ε hε with ⟨s, hs⟩
state_before: ι : Type u_1
α : Type ?u.3377
E : Type u_2
F : Type ?u.3383
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
⊢ ∃ s, ∀ (t : Finset ι), Disjoint t s → ‖∑ i in t, f i‖ < ε

tactic: refine' ⟨s ∪ h.toFinset, fun t ht => _⟩
state_before: case intro
ι : Type u_1
α : Type ?u.3377
E : Type u_2
F : Type ?u.3383
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
s : Finset ι
hs : ∀ (t : Finset ι), Disjoint t s → ‖∑ i in t, g i‖ < ε
⊢ ∃ s, ∀ (t : Finset ι), Disjoint t s → ‖∑ i in t, f i‖ < ε

tactic: have : ∀ i ∈ t, ‖f i‖ ≤ g i := by
  intro i hi
  simp only [disjoint_left, mem_union, not_or, h.mem_toFinset, Set.mem_compl_iff,
    Classical.not_not] at ht
  exact (ht hi).2
state_before: case intro
ι : Type u_1
α : Type ?u.3377
E : Type u_2
F : Type ?u.3383
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
s : Finset ι
hs : ∀ (t : Finset ι), Disjoint t s → ‖∑ i in t, g i‖ < ε
t : Finset ι
ht : Disjoint t (s ∪ Set.Finite.toFinset h)
⊢ ‖∑ i in t, f i‖ < ε

tactic: calc
  ‖∑ i in t, f i‖ ≤ ∑ i in t, g i := norm_sum_le_of_le _ this
  _ ≤ ‖∑ i in t, g i‖ := (le_abs_self _)
  _ < ε := hs _ (ht.mono_right le_sup_left)
state_before: case intro
ι : Type u_1
α : Type ?u.3377
E : Type u_2
F : Type ?u.3383
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
s : Finset ι
hs : ∀ (t : Finset ι), Disjoint t s → ‖∑ i in t, g i‖ < ε
t : Finset ι
ht : Disjoint t (s ∪ Set.Finite.toFinset h)
this : ∀ (i : ι), i ∈ t → ‖f i‖ ≤ g i
⊢ ‖∑ i in t, f i‖ < ε

tactic: intro i hi
state_before: ι : Type u_1
α : Type ?u.3377
E : Type u_2
F : Type ?u.3383
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
s : Finset ι
hs : ∀ (t : Finset ι), Disjoint t s → ‖∑ i in t, g i‖ < ε
t : Finset ι
ht : Disjoint t (s ∪ Set.Finite.toFinset h)
⊢ ∀ (i : ι), i ∈ t → ‖f i‖ ≤ g i

tactic: simp only [disjoint_left, mem_union, not_or, h.mem_toFinset, Set.mem_compl_iff,
  Classical.not_not] at ht
state_before: ι : Type u_1
α : Type ?u.3377
E : Type u_2
F : Type ?u.3383
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
s : Finset ι
hs : ∀ (t : Finset ι), Disjoint t s → ‖∑ i in t, g i‖ < ε
t : Finset ι
ht : Disjoint t (s ∪ Set.Finite.toFinset h)
i : ι
hi : i ∈ t
⊢ ‖f i‖ ≤ g i

tactic: exact (ht hi).2
state_before: ι : Type u_1
α : Type ?u.3377
E : Type u_2
F : Type ?u.3383
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
s : Finset ι
hs : ∀ (t : Finset ι), Disjoint t s → ‖∑ i in t, g i‖ < ε
t : Finset ι
i : ι
hi : i ∈ t
ht : ∀ ⦃a : ι⦄, a ∈ t → ¬a ∈ s ∧ a ∈ {x | ‖f x‖ ≤ g x}
⊢ ‖f i‖ ≤ g i