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

tactic: refine Metric.cauchySeq_iff'.2 fun ε hε => ?_
state_before: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ℕ → E
g : ℕ → ℝ
hg : CauchySeq fun n => ∑ i ∈ range n, g i
hf : ∀ (i : ℕ), ‖f i‖ ≤ g i
⊢ CauchySeq fun n => ∑ i ∈ range n, f i
state_after: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ℕ → E
g : ℕ → ℝ
hg : CauchySeq fun n => ∑ i ∈ range n, g i
hf : ∀ (i : ℕ), ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
⊢ ∃ N, ∀ n ≥ N, dist (∑ i ∈ range n, f i) (∑ i ∈ range N, f i) < ε

tactic: refine (Metric.cauchySeq_iff'.1 hg ε hε).imp fun N hg n hn => ?_
state_before: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ℕ → E
g : ℕ → ℝ
hg : CauchySeq fun n => ∑ i ∈ range n, g i
hf : ∀ (i : ℕ), ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
⊢ ∃ N, ∀ n ≥ N, dist (∑ i ∈ range n, f i) (∑ i ∈ range N, f i) < ε
state_after: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ℕ → E
g : ℕ → ℝ
hg✝ : CauchySeq fun n => ∑ i ∈ range n, g i
hf : ∀ (i : ℕ), ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
N : ℕ
hg : ∀ n ≥ N, dist (∑ i ∈ range n, g i) (∑ i ∈ range N, g i) < ε
n : ℕ
hn : n ≥ N
⊢ dist (∑ i ∈ range n, f i) (∑ i ∈ range N, f i) < ε

tactic: specialize hg n hn
state_before: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ℕ → E
g : ℕ → ℝ
hg✝ : CauchySeq fun n => ∑ i ∈ range n, g i
hf : ∀ (i : ℕ), ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
N : ℕ
hg : ∀ n ≥ N, dist (∑ i ∈ range n, g i) (∑ i ∈ range N, g i) < ε
n : ℕ
hn : n ≥ N
⊢ dist (∑ i ∈ range n, f i) (∑ i ∈ range N, f i) < ε
state_after: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ℕ → E
g : ℕ → ℝ
hg✝ : CauchySeq fun n => ∑ i ∈ range n, g i
hf : ∀ (i : ℕ), ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
N n : ℕ
hn : n ≥ N
hg : dist (∑ i ∈ range n, g i) (∑ i ∈ range N, g i) < ε
⊢ dist (∑ i ∈ range n, f i) (∑ i ∈ range N, f i) < ε

tactic: rw [dist_eq_norm, ← sum_Ico_eq_sub _ hn] at hg ⊢
state_before: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ℕ → E
g : ℕ → ℝ
hg✝ : CauchySeq fun n => ∑ i ∈ range n, g i
hf : ∀ (i : ℕ), ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
N n : ℕ
hn : n ≥ N
hg : dist (∑ i ∈ range n, g i) (∑ i ∈ range N, g i) < ε
⊢ dist (∑ i ∈ range n, f i) (∑ i ∈ range N, f i) < ε
state_after: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ℕ → E
g : ℕ → ℝ
hg✝ : CauchySeq fun n => ∑ i ∈ range n, g i
hf : ∀ (i : ℕ), ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
N n : ℕ
hn : n ≥ N
hg : ‖∑ k ∈ Ico N n, g k‖ < ε
⊢ ‖∑ k ∈ Ico N n, f k‖ < ε

tactic: calc
  ‖∑ k ∈ Ico N n, f k‖ ≤ ∑ k ∈ _, ‖f k‖ := norm_sum_le _ _
  _ ≤ ∑ k ∈ _, g k := sum_le_sum fun x _ => hf x
  _ ≤ ‖∑ k ∈ _, g k‖ := le_abs_self _
  _ < ε := hg
state_before: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ℕ → E
g : ℕ → ℝ
hg✝ : CauchySeq fun n => ∑ i ∈ range n, g i
hf : ∀ (i : ℕ), ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
N n : ℕ
hn : n ≥ N
hg : ‖∑ k ∈ Ico N n, g k‖ < ε
⊢ ‖∑ k ∈ Ico N n, f k‖ < ε
state_after: no goals