Imports
import Mathlib.Tactic
import Analysis.Section_7_3Analysis 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 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 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 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 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 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 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 Series.f_7_4_4_bij : Function.Bijective f_7_4_4 := ⊢ Function.Bijective f_7_4_4 All goals completed! 🐙theorem 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 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 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.41, Proposition 7.2.14,
and expressing a n as the difference of a n + |a n| and |a n|.
theorem 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