Imports
import Mathlib.Tactic import Analysis.Section_7_3

Analysis I, Section 7.4: Rearrangement of series

I have attempted to make the translation as faithful a paraphrasing as possible of the original text. When there is a choice between a more idiomatic Lean solution and a more faithful translation, I have generally chosen the latter. In particular, there will be places where the Lean code could be "golfed" to be more elegant and idiomatic, but I have consciously avoided doing so.

Main constructions and results of this section:

  • Rearrangement of non-negative or absolutely convergent series.

namespace Chapter7theorem Series.sum_eq_sum (b:ℕ → ℝ) {N:ℤ} (hN: N ≥ 0) : ∑ n ∈ .Icc 0 N, (if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ .Iic N.toNat, b n := b:ℕ → ℝN:ℤhN:N ≥ 0⊢ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n convert Finset.sum_image (g := Int.ofNat) (b:ℕ → ℝN:ℤhN:N ≥ 0⊢ Set.InjOn Int.ofNat ↑?m.42 All goals completed! 🐙) b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ x ∈ Finset.Icc 0 N ↔ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat); b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N ↔ ∃ a ≤ N.toNat, ↑a = x; b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N → ∃ a ≤ N.toNat, ↑a = xb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ (∃ a ≤ N.toNat, ↑a = x) → 0 ≤ x ∧ x ≤ N b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N → ∃ a ≤ N.toNat, ↑a = x b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤleft✝:0 ≤ xright✝:x ≤ N⊢ ∃ a ≤ N.toNat, ↑a = x; b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤleft✝:0 ≤ xright✝:x ≤ N⊢ x.toNat ≤ N.toNat ∧ ↑x.toNat = x; All goals completed! 🐙 All goals completed! 🐙

Proposition 7.4.1

theorem Series.converges_of_permute_nonneg {a:ℕ → ℝ} (ha: (a:Series).nonneg) (hconv: (a:Series).converges) {f: ℕ → ℕ} (hf: Function.Bijective f) : (fun n ↦ a (f n) : Series).converges ∧ (a:Series).sum = (fun n ↦ a (f n) : Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum -- This proof is written to follow the structure of the original text. a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum have haf : (af:Series).nonneg := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)n:ℤ⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq n ≥ 0; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)n:ℤh:n ≥ 0⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq n ≥ 0a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)n:ℤh:¬n ≥ 0⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq n ≥ 0 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)n:ℤh:n ≥ 0⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq n ≥ 0a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)n:ℤh:¬n ≥ 0⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq n ≥ 0 All goals completed! 🐙 a:ℕ → ℝhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)n:ℤh:n ≥ 0ha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑(f n.toNat) ≥ 0⊢ 0 ≤ a (f n.toNat); All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone S⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone T⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup S⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup T⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Q⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.suma:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Q⊢ (∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L' a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum have Ssum : L = (a:Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = L; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesTo L; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ Filter.Tendsto { m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial Filter.atTop (nhds (iSup S)) a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ (Set.range S).Nonemptya:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ BddAbove (Set.range S) a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ (Set.range S).Nonempty a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ S 0 ∈ Set.range S; All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup Tthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Q:ℝhQ:∀ (N : ℤ), S N ≤ Q⊢ BddAbove (Set.range S); a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup Tthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Q:ℝhQ:∀ (N : ℤ), S N ≤ Q⊢ Q ∈ upperBounds (Set.range S); All goals completed! 🐙 have Tsum : L' = (af:Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:L = { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum = L'; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:L = { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:L = { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum⊢ Filter.Tendsto { m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial Filter.atTop (nhds (iSup T)) a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:L = { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum⊢ (Set.range T).Nonemptya:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:L = { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum⊢ BddAbove (Set.range T) a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:L = { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum⊢ (Set.range T).Nonempty a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:L = { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum⊢ T 0 ∈ Set.range T; All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:L = { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumQ:ℝhQ:∀ (M : ℤ), T M ≤ Q⊢ BddAbove (Set.range T); a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:L = { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumQ:ℝhQ:∀ (M : ℤ), T M ≤ Q⊢ Q ∈ upperBounds (Set.range T); All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ Qthis:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:L = { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumTsum:L' = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum⊢ ∃ M, ∀ (N : ℤ), { m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial N ≤ M All goals completed! 🐙 have hTL (M:ℤ) : T M ≤ L := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0⊢ T M ≤ La:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:¬M ≥ 0⊢ T M ≤ L a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:¬M ≥ 0⊢ T M ≤ La:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0⊢ T M ≤ L a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:¬M ≥ 0⊢ T M ≤ L have hM' : M < 0 := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:¬M ≥ 0hM':M < 0⊢ 0 ≤ L a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:¬M ≥ 0hM':M < 0⊢ BddAbove (Set.range S) All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNat⊢ T M ≤ L have hN : ∃ N, ∀ m ∈ Y, f m ≤ N := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNat⊢ ∀ m ∈ Y, f m ≤ (Finset.image f Y).sup id; intro m a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatm:ℕhm:m ∈ Y⊢ f m ≤ (Finset.image f Y).sup id a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatm:ℕhm:m ∈ Y⊢ f m ∈ Finset.image f Y; All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ T M ≤ L calc _ = ∑ m ∈ Y, af m := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ T M = ∑ m ∈ Y, af m a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ (∑ n ∈ Finset.Icc 0 M, if 0 ≤ n then a (f n.toNat) else 0) = ∑ n ∈ Y, a (f n); All goals completed! 🐙 _ = ∑ n ∈ f '' Y, a n := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∑ m ∈ Y, af m = ∑ n ∈ (f '' ↑Y).toFinset, a n a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∑ n ∈ (f '' ↑Y).toFinset, a n = ∑ m ∈ Y, af m; convert Finset.sum_image (a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ Set.InjOn ?m.439 ↑?m.438 All goals completed! 🐙); All goals completed! 🐙 _ ≤ ∑ n ∈ .Iic N, a n := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∑ n ∈ (f '' ↑Y).toFinset, a n ≤ ∑ n ∈ Finset.Iic N, a n a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ (f '' ↑Y).toFinset ⊆ Finset.Iic Na:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∀ i ∈ Finset.Iic N, i ∉ (f '' ↑Y).toFinset → 0 ≤ a i a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ (f '' ↑Y).toFinset ⊆ Finset.Iic N intro _ a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ Na✝¹:ℕa✝:a✝¹ ∈ (f '' ↑Y).toFinset⊢ a✝¹ ∈ Finset.Iic N; All goals completed! 🐙 intro i a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ Ni:ℕa✝:i ∈ Finset.Iic N⊢ i ∉ (f '' ↑Y).toFinset → 0 ≤ a i a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ Ni:ℕa✝¹:i ∈ Finset.Iic Na✝:i ∉ (f '' ↑Y).toFinset⊢ 0 ≤ a i; a:ℕ → ℝhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ Ni:ℕa✝¹:i ∈ Finset.Iic Na✝:i ∉ (f '' ↑Y).toFinsetha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑i ≥ 0⊢ 0 ≤ a i; All goals completed! 🐙 _ = S N := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∑ n ∈ Finset.Iic N, a n = S ↑N a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∑ n ∈ Finset.Iic N, a n = ∑ n ∈ Finset.Icc 0 ↑N, if 0 ≤ n then a n.toNat else 0; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ (∑ n ∈ Finset.Icc 0 ↑N, if 0 ≤ n then a n.toNat else 0) = ∑ n ∈ Finset.Iic N, a n; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ↑N ≥ 0; All goals completed! 🐙 _ ≤ L := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ S ↑N ≤ L a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QM:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic M.toNatN:ℕhN:∀ m ∈ Y, f m ≤ N⊢ BddAbove (Set.range S); All goals completed! 🐙 have hTbound : ∃ Q, ∀ M, T M ≤ Q := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ Q⊢ L = L' have hSL' (N:ℤ) : S N ≤ L' := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N ≥ 0⊢ S N ≤ L'a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:¬N ≥ 0⊢ S N ≤ L' a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:¬N ≥ 0⊢ S N ≤ L'a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N ≥ 0⊢ S N ≤ L' a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:¬N ≥ 0⊢ S N ≤ L' have hN' : N < 0 := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:¬N ≥ 0hN':N < 0⊢ 0 ≤ L' a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:¬N ≥ 0hN':N < 0⊢ BddAbove (Set.range T) All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic N.toNat⊢ S N ≤ L' have hM : ∃ M, ∀ n ∈ X, ∃ m, f m = n ∧ m ≤ M := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic N.toNat⊢ ∀ n ∈ X, ∃ m, f m = n ∧ m ≤ (X.preimage f ⋯).sup id intro n a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatn:ℕhn:n ∈ X⊢ ∃ m, f m = n ∧ m ≤ (X.preimage f ⋯).sup id; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatn:ℕhn:n ∈ Xm:ℕhm:f m = n⊢ ∃ m, f m = n ∧ m ≤ (X.preimage f ⋯).sup id a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatn:ℕhn:n ∈ Xm:ℕhm:f m = n⊢ m ≤ (X.preimage f ⋯).sup id a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatn:ℕhn:n ∈ Xm:ℕhm:f m = n⊢ m ∈ X.preimage f ⋯ All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ M⊢ S N ≤ L' have sum_eq_sum (b:ℕ → ℝ) {N:ℤ} (hN: N ≥ 0) : ∑ n ∈ .Icc 0 N, (if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ .Iic N.toNat, b n := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum convert Finset.sum_image (g := Int.ofNat) (a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN✝:ℤhN✝:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0⊢ Set.InjOn Int.ofNat ↑?m.926 All goals completed! 🐙) a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN✝:ℤhN✝:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ x ∈ Finset.Icc 0 N ↔ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat); a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN✝:ℤhN✝:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N ↔ ∃ a ≤ N.toNat, ↑a = x; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN✝:ℤhN✝:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N → ∃ a ≤ N.toNat, ↑a = xa:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN✝:ℤhN✝:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ (∃ a ≤ N.toNat, ↑a = x) → 0 ≤ x ∧ x ≤ N a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN✝:ℤhN✝:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N → ∃ a ≤ N.toNat, ↑a = x a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN✝:ℤhN✝:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤleft✝:0 ≤ xright✝:x ≤ N⊢ ∃ a ≤ N.toNat, ↑a = x; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN✝:ℤhN✝:N ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤleft✝:0 ≤ xright✝:x ≤ N⊢ x.toNat ≤ N.toNat ∧ ↑x.toNat = x; All goals completed! 🐙 All goals completed! 🐙 calc _ = ∑ n ∈ X, a n := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ S N = ∑ n ∈ X, a n All goals completed! 🐙 _ = ∑ n ∈ ((Finset.Iic M).filter (f · ∈ X)).image f, a n := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ ∑ n ∈ X, a n = ∑ n ∈ Finset.image f ({x ∈ Finset.Iic M | f x ∈ X}), a n a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ X = Finset.image f ({x ∈ Finset.Iic M | f x ∈ X}); a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b na✝:ℕ⊢ a✝ ∈ X ↔ a✝ ∈ Finset.image f ({x ∈ Finset.Iic M | f x ∈ X}); a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b na✝:ℕ⊢ a✝ ∈ X ↔ ∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = a✝; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b na✝:ℕ⊢ a✝ ∈ X → ∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = a✝a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b na✝:ℕ⊢ (∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = a✝) → a✝ ∈ X a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b na✝:ℕ⊢ a✝ ∈ X → ∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = a✝ a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b na✝:ℕh:a✝ ∈ X⊢ ∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = a✝; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b nm:ℕhm':m ≤ Mh:f m ∈ X⊢ ∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = f m; All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b nw✝:ℕleft✝:w✝ ≤ Mright✝:f w✝ ∈ X⊢ f w✝ ∈ X; All goals completed! 🐙 _ ≤ ∑ m ∈ .Iic M, af m := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ ∑ n ∈ Finset.image f ({x ∈ Finset.Iic M | f x ∈ X}), a n ≤ ∑ m ∈ Finset.Iic M, af m a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ ∑ x ∈ Finset.Iic M with f x ∈ X, a (f x) ≤ ∑ m ∈ Finset.Iic M, af m a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ {x ∈ Finset.Iic M | f x ∈ X} ⊆ Finset.Iic Ma:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ ∀ i ∈ Finset.Iic M, i ∉ {x ∈ Finset.Iic M | f x ∈ X} → 0 ≤ a (f i) a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ {x ∈ Finset.Iic M | f x ∈ X} ⊆ Finset.Iic M All goals completed! 🐙 intro i a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b ni:ℕa✝:i ∈ Finset.Iic M⊢ i ∉ {x ∈ Finset.Iic M | f x ∈ X} → 0 ≤ a (f i) a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b ni:ℕa✝¹:i ∈ Finset.Iic Ma✝:i ∉ {x ∈ Finset.Iic M | f x ∈ X}⊢ 0 ≤ a (f i); a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)S:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b ni:ℕa✝¹:i ∈ Finset.Iic Ma✝:i ∉ {x ∈ Finset.Iic M | f x ∈ X}haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq ↑i ≥ 0⊢ 0 ≤ a (f i); All goals completed! 🐙 _ = T M := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ ∑ m ∈ Finset.Iic M, af m = T ↑M a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ ∑ n ∈ Finset.Iic M, a (f n) = ∑ n ∈ Finset.Icc 0 ↑M, if 0 ≤ n then a (f n.toNat) else 0; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ (∑ n ∈ Finset.Icc 0 ↑M, if 0 ≤ n then a (f n.toNat) else 0) = ∑ n ∈ Finset.Iic M, a (f n); a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ ↑M ≥ 0; All goals completed! 🐙 _ ≤ L' := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ T ↑M ≤ L' a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n ↦ a (f n)haf:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.nonnegS:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone ShTmono:Monotone TL:ℝ := iSup SL':ℝ := iSup ThSBound:∃ Q, ∀ (N : ℤ), S N ≤ QhTL:∀ (M : ℤ), T M ≤ LhTbound:∃ Q, ∀ (M : ℤ), T M ≤ QN:ℤhN:N✝ ≥ 0X:Finset ℕ := Finset.Iic N.toNatM:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n⊢ BddAbove (Set.range T); All goals completed! 🐙 All goals completed! 🐙

Example 7.4.2

theorem declaration uses `sorry`Series.zeta_2_converges : (fun n:ℕ ↦ 1/(n+1:ℝ)^2 : Series).converges := ⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ 1 / (↑n + 1) ^ 2) n.toNat else 0, vanish := ⋯ }.converges All goals completed! 🐙
theorem declaration uses `sorry`Series.permuted_zeta_2_converges : (fun n:ℕ ↦ if Even n then 1/(n+2:ℝ)^2 else 1/(n:ℝ)^2 : Series).converges := ⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ if Even n then 1 / (↑n + 2) ^ 2 else 1 / ↑n ^ 2) n.toNat else 0, vanish := ⋯ }.converges All goals completed! 🐙theorem declaration uses `sorry`Series.permuted_zeta_2_eq_zeta_2 : (fun n:ℕ ↦ if Even n then 1/(n+2:ℝ)^2 else 1/(n:ℝ)^2 : Series).sum = (fun n:ℕ ↦ 1/(n+1:ℝ)^2 : Series).sum := ⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ if Even n then 1 / (↑n + 2) ^ 2 else 1 / ↑n ^ 2) n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ 1 / (↑n + 1) ^ 2) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙

Proposition 7.4.3 (Rearrangement of series)

theorem declaration uses `sorry`Series.absConverges_of_permute {a:ℕ → ℝ} (ha : (a:Series).absConverges) {f: ℕ → ℕ} (hf: Function.Bijective f) : (fun n ↦ a (f n):Series).absConverges ∧ (a:Series).sum = (fun n ↦ a (f n) : Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum -- This proof is written to follow the structure of the original text. a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sum⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.converges⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.converges⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum have habs : (fun n ↦ |a (f n)| : Series).converges ∧ L = (fun n ↦ |a (f n)| : Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.converges⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs = { m := 0, seq := fun n ↦ if n ≥ 0 then |a n.toNat| else 0, vanish := ⋯ }a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.converges⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0, vanish := ⋯ }.nonnega:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.converges⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0, vanish := ⋯ }.converges a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.converges⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs = { m := 0, seq := fun n ↦ if n ≥ 0 then |a n.toNat| else 0, vanish := ⋯ } a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.converges⊢ (fun n ↦ if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = fun n ↦ if 0 ≤ n then |a n.toNat| else 0; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤ⊢ (if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = if 0 ≤ n then |a n.toNat| else 0; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh✝:n ≥ 0⊢ (if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = if 0 ≤ n then |a n.toNat| else 0a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh✝:¬n ≥ 0⊢ (if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = if 0 ≤ n then |a n.toNat| else 0 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh✝:n ≥ 0⊢ (if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = if 0 ≤ n then |a n.toNat| else 0a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh✝:¬n ≥ 0⊢ (if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = if 0 ≤ n then |a n.toNat| else 0 All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.converges⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0, vanish := ⋯ }.nonneg a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤ⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh:n ≥ 0⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh:¬n ≥ 0⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh:n ≥ 0⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh:¬n ≥ 0⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0 All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤ⊢ (if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0) = if h : n ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.m then (fun n ↦ |{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩ else 0; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh✝:n ≥ 0⊢ (if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0) = if h : n ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.m then (fun n ↦ |{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩ else 0a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh✝:¬n ≥ 0⊢ (if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0) = if h : n ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.m then (fun n ↦ |{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩ else 0 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh✝:n ≥ 0⊢ (if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0) = if h : n ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.m then (fun n ↦ |{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩ else 0a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesn:ℤh✝:¬n ≥ 0⊢ (if n ≥ 0 then (fun n ↦ |a n|) n.toNat else 0) = if h : n ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.m then (fun n ↦ |{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩ else 0 All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ L' = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.absConverges ∧ L' = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)this:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.absConverges ∧ L' = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.suma:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L' a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)this:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.absConverges ∧ L' = { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)this:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'⊢ { m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.abs.converges a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)this:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'n:ℤ⊢ (if h : n ≥ { m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.m then (fun n ↦ |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩ else 0) = if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0; a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)this:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'n:ℤh✝:n ≥ 0⊢ (if h : n ≥ { m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.m then (fun n ↦ |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩ else 0) = if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)this:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'n:ℤh✝:¬n ≥ 0⊢ (if h : n ≥ { m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.m then (fun n ↦ |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩ else 0) = if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)this:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'n:ℤh✝:n ≥ 0⊢ (if h : n ≥ { m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.m then (fun n ↦ |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩ else 0) = if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)this:{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'n:ℤh✝:¬n ≥ 0⊢ (if h : n ≥ { m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.m then (fun n ↦ |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩ else 0) = if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0 All goals completed! 🐙 a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)⊢ ∀ (ε : ℝ), 0 < ε → ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε intro ε a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < ε⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε a:ℕ → ℝha:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < ε⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤhN₁:N₁ ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.mha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε; a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε have : ∃ N ≥ N₁, |(a:Series).partial N - L'| < ε/2 := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁hconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesTo { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum⊢ ∃ N ≥ N₁, |{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁hconv:∀ (ε : ℝ), 0 < ε → ∃ a_2, ∀ (b : ℤ), a_2 ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b - { m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| < ε⊢ ∃ N ≥ N₁, |{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁hconv:∀ (ε : ℝ), 0 < ε → ∃ a_2, ∀ (b : ℤ), a_2 ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b - { m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| < εN:ℤhN:∀ (b : ℤ), N ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b - { m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| < ε / 2⊢ ∃ N ≥ N₁, |{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2 use max N N₁, (a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁hconv:∀ (ε : ℝ), 0 < ε → ∃ a_2, ∀ (b : ℤ), a_2 ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b - { m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| < εN:ℤhN:∀ (b : ℤ), N ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b - { m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| < ε / 2⊢ max N N₁ ≥ N₁ All goals completed! 🐙); a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁hconv:∀ (ε : ℝ), 0 < ε → ∃ a_2, ∀ (b : ℤ), a_2 ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b - { m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| < εN:ℤhN:∀ (b : ℤ), N ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b - { m := 0, seq := fun n ↦ if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| < ε / 2⊢ N ≤ max N N₁; All goals completed! 🐙 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε have hNpos : N ≥ 0 := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun f⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε have : ∃ M, ∀ n ≤ N.toNat, finv n ≤ M := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun f⊢ ∀ n ≤ N.toNat, finv n ≤ (Finset.image finv (Finset.Iic N.toNat)).sup id intro n a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fn:ℕhn:n ≤ N.toNat⊢ finv n ≤ (Finset.image finv (Finset.Iic N.toNat)).sup id a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fn:ℕhn:n ≤ N.toNat⊢ (if h : ∃ x, f x = n then h.choose else Classical.arbitrary ℕ) ∈ Finset.image finv (Finset.Iic N.toNat); a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fn:ℕhn:n ≤ N.toNat⊢ ∃ a ≤ N.toNat, finv a = if h : ∃ x, f x = n then h.choose else Classical.arbitrary ℕ; a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fn:ℕhn:n ≤ N.toNat⊢ finv n = if h : ∃ x, f x = n then h.choose else Classical.arbitrary ℕ; All goals completed! 🐙 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ M⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε; a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ M⊢ ∀ (b : ℤ), ↑M ≤ b → |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε; intro M' a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'⊢ |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial M' - L'| < ε have hM'_pos : M' ≥ 0 := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙 have why : (Finset.Iic M'.toNat).image f ⊇ .Iic N.toNat := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial M' - L'| < ε have claim : ∑ m ∈ .Iic M'.toNat, a (f m) = ∑ n ∈ .Iic N.toNat, a n + ∑ n ∈ X, a n := calc _ = ∑ n ∈ (Finset.Iic M'.toNat).image f , a n := a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ ∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.image f (Finset.Iic M'.toNat), a n a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ ∑ n ∈ Finset.image f (Finset.Iic M'.toNat), a n = ∑ m ∈ Finset.Iic M'.toNat, a (f m); a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ Set.InjOn f ↑(Finset.Iic M'.toNat); All goals completed! 🐙 _ = _ := a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ ∑ n ∈ Finset.image f (Finset.Iic M'.toNat), a n = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a n a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ Finset.image f (Finset.Iic M'.toNat) = Finset.Iic N.toNat ∪ Xa:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ DecidableEq ℕa:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ Disjoint (Finset.Iic N.toNat) X a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ Finset.image f (Finset.Iic M'.toNat) = Finset.Iic N.toNat ∪ X All goals completed! 🐙 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ DecidableEq ℕ All goals completed! 🐙 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNat⊢ ∀ ⦃a : ℕ⦄, a ∈ X → a ∉ Finset.Iic N.toNat; intro n a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatn:ℕhn:n ∈ X⊢ n ∉ Finset.Iic N.toNat; a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatn:ℕhn:n ∈ Finset.image f (Finset.Iic M'.toNat) ∧ n ∉ Finset.Iic N.toNat⊢ n ∉ Finset.Iic N.toNat; All goals completed! 🐙 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑X⊢ |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial M' - L'| < ε a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNat⊢ |{ m := 0, seq := fun n ↦ if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial M' - L'| < ε have why2 : X ⊆ Finset.Icc (N.toNat+1) q := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙 have claim2 : |∑ n ∈ X, a n| ≤ ε/2 := calc _ ≤ ∑ n ∈ X, |a n| := X.abs_sum_le_sum_abs a _ ≤ ∑ n ∈ .Icc (N.toNat+1) q, |a n| := a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ∑ n ∈ X, |a n| ≤ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ∀ i ∈ Finset.Icc (N.toNat + 1) q, i ∉ X → 0 ≤ |a i|; All goals completed! 🐙 _ ≤ ε/2 := a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| ≤ ε / 2 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| = |∑ n ∈ Finset.Icc (↑N.toNat + 1) ↑q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n|a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ↑N.toNat + 1 ≥ N₁a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ↑q ≥ N₁ a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| = |∑ n ∈ Finset.Icc (↑N.toNat + 1) ↑q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n|a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ↑N.toNat + 1 ≥ N₁a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ↑q ≥ N₁ try All goals completed! 🐙 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| = |∑ x ∈ Finset.Icc (N + 1) ↑q, if 0 ≤ x then |if 0 ≤ x then a x.toNat else 0| else 0|; a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| = ∑ x ∈ Finset.Icc (N + 1) ↑q, if 0 ≤ x then |if 0 ≤ x then a x.toNat else 0| else 0; a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ (∑ x ∈ Finset.Icc (N + 1) ↑q, if 0 ≤ x then |if 0 ≤ x then a x.toNat else 0| else 0) = ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| convert Finset.sum_image (g := fun (n:ℕ) ↦ (n:ℤ)) (a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) q⊢ Set.InjOn (fun n ↦ ↑n) ↑?m.1624 All goals completed! 🐙) using 2 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qx:ℤ⊢ x ∈ Finset.Icc (N + 1) ↑q ↔ x ∈ Finset.image (fun n ↦ ↑n) (Finset.Icc (N.toNat + 1) q); a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qx:ℤ⊢ N < x ∧ x ≤ ↑q ↔ ∃ a, (N.toNat < a ∧ a ≤ q) ∧ ↑a = x; a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qx:ℤ⊢ N < x ∧ x ≤ ↑q → ∃ a, (N.toNat < a ∧ a ≤ q) ∧ ↑a = xa:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qx:ℤ⊢ (∃ a, (N.toNat < a ∧ a ≤ q) ∧ ↑a = x) → N < x ∧ x ≤ ↑q a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qx:ℤ⊢ N < x ∧ x ≤ ↑q → ∃ a, (N.toNat < a ∧ a ≤ q) ∧ ↑a = x a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qx:ℤleft✝:N < xright✝:x ≤ ↑q⊢ ∃ a, (N.toNat < a ∧ a ≤ q) ∧ ↑a = x; a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qx:ℤleft✝:N < xright✝:x ≤ ↑q⊢ (N.toNat < x.toNat ∧ x.toNat ≤ q) ∧ ↑x.toNat = x; All goals completed! 🐙 All goals completed! 🐙 calc _ ≤ |(af:Series).partial M' - (a:Series).partial N| + |(a:Series).partial N - L'| := abs_sub_le _ _ _ _ < |(af:Series).partial M' - (a:Series).partial N| + ε/2 := a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qclaim2:|∑ n ∈ X, a n| ≤ ε / 2⊢ |{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial M' - { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N| + |{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < |{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial M' - { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N| + ε / 2 All goals completed! 🐙 _ ≤ ε/2 + ε/2 := a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qclaim2:|∑ n ∈ X, a n| ≤ ε / 2⊢ |{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial M' - { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N| + ε / 2 ≤ ε / 2 + ε / 2 a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qclaim2:|∑ n ∈ X, a n| ≤ ε / 2⊢ |{ m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial M' - { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N| ≤ ε / 2; a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qclaim2:|∑ n ∈ X, a n| ≤ ε / 2⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial M' - { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N = ∑ n ∈ X, a n a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qclaim2:|∑ n ∈ X, a n| ≤ ε / 2⊢ ∑ n ∈ Finset.Iic M'.toNat, af n - ∑ n ∈ Finset.Iic N.toNat, a n = ∑ n ∈ X, a n; All goals completed! 🐙 _ = ε := a:ℕ → ℝha✝:∀ ε > 0, ∃ N ≥ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧ L = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n ↦ a (f n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁, ∀ q ≥ N₁, |∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:N ≥ 0finv:ℕ → ℕ := Function.invFun fM:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:M' ≥ 0why:Finset.image f (Finset.Iic M'.toNat) ⊇ Finset.Iic N.toNatX:Finset ℕ := Finset.image f (Finset.Iic M'.toNat) \ Finset.Iic N.toNatclaim:∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a nq':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max q' N.toNatwhy2:X ⊆ Finset.Icc (N.toNat + 1) qclaim2:|∑ n ∈ X, a n| ≤ ε / 2⊢ ε / 2 + ε / 2 = ε All goals completed! 🐙

Example 7.4.4

noncomputable abbrev Series.a_7_4_4 : ℕ → ℝ := fun n ↦ (-1:ℝ)^n / (n+2)
theorem declaration uses `sorry`Series.ex_7_4_4_conv : (a_7_4_4 : Series).converges := ⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then a_7_4_4 n.toNat else 0, vanish := ⋯ }.converges All goals completed! 🐙theorem declaration uses `sorry`Series.ex_7_4_4_sum : (a_7_4_4 : Series).sum > 0 := ⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then a_7_4_4 n.toNat else 0, vanish := ⋯ }.sum > 0 All goals completed! 🐙abbrev Series.f_7_4_4 : ℕ → ℕ := fun n ↦ if n % 3 = 0 then 2 * (n/3) else 4 * (n/3) + 2 * (n % 3) - 1theorem declaration uses `sorry`Series.f_7_4_4_bij : Function.Bijective f_7_4_4 := ⊢ Function.Bijective f_7_4_4 All goals completed! 🐙theorem declaration uses `sorry`Series.ex_7_4_4'_conv : (fun n ↦ a_7_4_4 (f_7_4_4 n) :Series).converges := ⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a_7_4_4 (f_7_4_4 n)) n.toNat else 0, vanish := ⋯ }.converges All goals completed! 🐙theorem declaration uses `sorry`Series.ex_7_4_4'_sum : (fun n ↦ a_7_4_4 (f_7_4_4 n) :Series).sum < 0 := ⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a_7_4_4 (f_7_4_4 n)) n.toNat else 0, vanish := ⋯ }.sum < 0 All goals completed! 🐙

Exercise 7.4.1

theorem declaration uses `sorry`Series.absConverges_of_subseries {a:ℕ → ℝ} (ha: (a:Series).absConverges) {f: ℕ → ℕ} (hf: StrictMono f) : (fun n ↦ a (f n):Series).absConverges := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:StrictMono f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges All goals completed! 🐙

Exercise 7.4.2 : reprove Proposition 7.4.3 using Proposition 7.4.1, Proposition 7.2.14, and expressing a n as the difference of a n + |a n| and |a n|.

theorem declaration uses `sorry`Series.absConverges_of_permute' {a:ℕ → ℝ} (ha : (a:Series).absConverges) {f: ℕ → ℕ} (hf: Function.Bijective f) : (fun n ↦ a (f n):Series).absConverges ∧ (a:Series).sum = (fun n ↦ a (f n):Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧ { m := 0, seq := fun n ↦ if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = { m := 0, seq := fun n ↦ if n ≥ 0 then (fun n ↦ a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙
end Chapter7