Аналіз I, Розділ 8.2: Підсумовування на нескінченних множинах
Я (прим. перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним підходом Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підправити", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.
Основні конструкції та результати цього розділу:
-
Абсолютна збіжність та підсумовування на зліченних нескінченних або загальних множинах.
-
Теорема Рімана про перетворення рядів.
Надано деякі нетривіальні API, що доповнюють матеріал підручника і пов'язують ці поняття з існуючими поняттями підсумовування.
Після цього розділу позначення для підсумовування, розроблене тут, буде застаріле на користь API Mathlib для Summable і tsum.
namespace Chapter8open Chapter7 Chapter7.Series Finset Function Filter
Визначення 8.2.1 (Ряди на лічильних множинах). Зверніть увагу, що з цією дефініцією функції,
визначені на скінчених множинах, не будуть абсолютно збіжними; для таких випадків слід використовувати
випадки AbsConvergent'.
abbrev AbsConvergent {X:Type} (f: X → ℝ) : Prop := ∃ g: ℕ → X, Bijective g ∧ (f ∘ g: Series).absConvergestheorem AbsConvergent.mk {X: Type} {f:X → ℝ} {g:ℕ → X} (h: Bijective g) (hfg: (f ∘ g:Series).absConverges) : AbsConvergent f := X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ AbsConvergent f All goals completed! 🐙open Classical in
/-- Дефініція була обрана таким чином, щоб давати змістовне значення, коли `X` скінченна,
навіть якщо `AbsConvergent` за визначенням є хибним у цьому контексті.
-/
noncomputable abbrev Sum {X:Type} (f: X → ℝ) : ℝ := if h: AbsConvergent f then (f ∘ h.choose:Series).sum else
if _hX: Finite X then (∑ x ∈ @univ X (Fintype.ofFinite X), f x) else 0theorem Sum.of_finite {X:Type} [hX:Finite X] (f:X → ℝ) : Sum f = ∑ x ∈ @Finset.univ X (Fintype.ofFinite X), f x := X:TypehX:Finite Xf:X → ℝ⊢ Sum f = ∑ x, f x
have : ¬ AbsConvergent f := X:TypehX:Finite Xf:X → ℝ⊢ Sum f = ∑ x, f x
X:TypehX:Finite Xf:X → ℝthis:AbsConvergent f⊢ False; X:TypehX:Finite Xf:X → ℝg:ℕ → Xhg:Bijective ga✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ False
X:TypehX:¬Infinite ℕf:X → ℝg:ℕ → Xhg:Bijective ga✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ False; X:TypehX:¬Infinite ℕf:X → ℝg:ℕ → Xhg:Bijective ga✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ Infinite ℕ; All goals completed! 🐙
All goals completed! 🐙theorem AbsConvergent.comp {X: Type} {f:X → ℝ} {g:ℕ → X} (h: Bijective g) (hf: AbsConvergent f) : (f ∘ g:Series).absConverges := X:Typef:X → ℝg:ℕ → Xh:Bijective ghf:AbsConvergent f⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges
X:Typef:X → ℝg:ℕ → Xh:Bijective gg':ℕ → Xhbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConverges⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges
X:Typef:X → ℝg:ℕ → Xh:Bijective gg':ℕ → Xhbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges
X:Typef:X → ℝg:ℕ → Xh:Bijective gg':ℕ → Xhbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'hG:Function.Bijective (_fvar.10895 ∘ _fvar.10859) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.10907, Function.LeftInverse.surjective _fvar.10903⟩
_fvar.10860⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges
X:Typef:X → ℝg:ℕ → Xh:Bijective gg':ℕ → Xhbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'hG:Function.Bijective (_fvar.10895 ∘ _fvar.10859) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.10907, Function.LeftInverse.surjective _fvar.10903⟩
_fvar.10860n:ℤa✝:n ≥ 0⊢ (f ∘ g) n.toNat = (fun n => (f ∘ g') ((g'_inv ∘ g) n)) n.toNat
All goals completed! 🐙theorem Sum.eq {X: Type} {f:X → ℝ} {g:ℕ → X} (h: Bijective g) (hfg: (f ∘ g:Series).absConverges) : (f ∘ g:Series).convergesTo (Sum f) := X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.convergesTo (Sum f)
X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.convergesTo (Sum f)
X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542⊢ { m := 0, seq := fun n => if 0 ≤ n then f (g n.toNat) else 0, vanish := ⋯ }.convergesTo
{ m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.sum
X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542hbij:Bijective (Exists.choose this)hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ Exists.choose this) n.toNat else 0, vanish := ⋯ }.absConverges⊢ { m := 0, seq := fun n => if 0 ≤ n then f (g n.toNat) else 0, vanish := ⋯ }.convergesTo
{ m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.sum
X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542g':ℕ → _fvar.12538 :=
@Exists.choose (ℕ → _fvar.12538)
(fun g =>
Function.Bijective g ∧
{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.12539 ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges)
_fvar.12561hbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConverges⊢ { m := 0, seq := fun n => if 0 ≤ n then f (g n.toNat) else 0, vanish := ⋯ }.convergesTo
{ m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.sum
X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542g':ℕ → _fvar.12538 :=
@Exists.choose (ℕ → _fvar.12538)
(fun g =>
Function.Bijective g ∧
{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.12539 ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges)
_fvar.12561hbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'⊢ { m := 0, seq := fun n => if 0 ≤ n then f (g n.toNat) else 0, vanish := ⋯ }.convergesTo
{ m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.sum
X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542g':ℕ → _fvar.12538 :=
@Exists.choose (ℕ → _fvar.12538)
(fun g =>
Function.Bijective g ∧
{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.12539 ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges)
_fvar.12561hbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'⊢ { m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.sum
X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542g':ℕ → _fvar.12538 :=
@Exists.choose (ℕ → _fvar.12538)
(fun g =>
Function.Bijective g ∧
{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.12539 ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges)
_fvar.12561hbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'hG:Function.Bijective (_fvar.30992 ∘ _fvar.12540) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.31004, Function.LeftInverse.surjective _fvar.31000⟩
_fvar.12541⊢ { m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.sum
X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542g':ℕ → _fvar.12538 :=
@Exists.choose (ℕ → _fvar.12538)
(fun g =>
Function.Bijective g ∧
{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.12539 ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges)
_fvar.12561hbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'hG:Function.Bijective (_fvar.30992 ∘ _fvar.12540) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.31004, Function.LeftInverse.surjective _fvar.31000⟩
_fvar.12541n:ℤ⊢ (if n ≥ 0 then (f ∘ g) n.toNat else 0) = if n ≥ 0 then (fun n => (f ∘ g') ((g'_inv ∘ g) n)) n.toNat else 0
X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542g':ℕ → _fvar.12538 :=
@Exists.choose (ℕ → _fvar.12538)
(fun g =>
Function.Bijective g ∧
{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.12539 ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges)
_fvar.12561hbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'hG:Function.Bijective (_fvar.30992 ∘ _fvar.12540) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.31004, Function.LeftInverse.surjective _fvar.31000⟩
_fvar.12541n:ℤhn:n ≥ 0⊢ (if n ≥ 0 then (f ∘ g) n.toNat else 0) = if n ≥ 0 then (fun n => (f ∘ g') ((g'_inv ∘ g) n)) n.toNat else 0X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542g':ℕ → _fvar.12538 :=
@Exists.choose (ℕ → _fvar.12538)
(fun g =>
Function.Bijective g ∧
{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.12539 ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges)
_fvar.12561hbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'hG:Function.Bijective (_fvar.30992 ∘ _fvar.12540) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.31004, Function.LeftInverse.surjective _fvar.31000⟩
_fvar.12541n:ℤhn:¬n ≥ 0⊢ (if n ≥ 0 then (f ∘ g) n.toNat else 0) = if n ≥ 0 then (fun n => (f ∘ g') ((g'_inv ∘ g) n)) n.toNat else 0 X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542g':ℕ → _fvar.12538 :=
@Exists.choose (ℕ → _fvar.12538)
(fun g =>
Function.Bijective g ∧
{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.12539 ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges)
_fvar.12561hbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'hG:Function.Bijective (_fvar.30992 ∘ _fvar.12540) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.31004, Function.LeftInverse.surjective _fvar.31000⟩
_fvar.12541n:ℤhn:n ≥ 0⊢ (if n ≥ 0 then (f ∘ g) n.toNat else 0) = if n ≥ 0 then (fun n => (f ∘ g') ((g'_inv ∘ g) n)) n.toNat else 0X:Typef:X → ℝg:ℕ → Xh:Bijective ghfg:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesthis:Chapter8.AbsConvergent _fvar.12539 := Chapter8.AbsConvergent.mk _fvar.12541 _fvar.12542g':ℕ → _fvar.12538 :=
@Exists.choose (ℕ → _fvar.12538)
(fun g =>
Function.Bijective g ∧
{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.12539 ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges)
_fvar.12561hbij:Bijective g'hconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg'_inv:X → ℕhleft:LeftInverse g'_inv g'hright:RightInverse g'_inv g'hG:Function.Bijective (_fvar.30992 ∘ _fvar.12540) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.31004, Function.LeftInverse.surjective _fvar.31000⟩
_fvar.12541n:ℤhn:¬n ≥ 0⊢ (if n ≥ 0 then (f ∘ g) n.toNat else 0) = if n ≥ 0 then (fun n => (f ∘ g') ((g'_inv ∘ g) n)) n.toNat else 0 All goals completed! 🐙theorem Sum.of_comp {X Y:Type} {f:X → ℝ} (h: AbsConvergent f) {g: Y → X} (hbij: Bijective g) : AbsConvergent (f ∘ g) ∧ Sum f = Sum (f ∘ g) := X:TypeY:Typef:X → ℝh:AbsConvergent fg:Y → Xhbij:Bijective g⊢ AbsConvergent (f ∘ g) ∧ Sum f = Sum (f ∘ g)
X:TypeY:Typef:X → ℝg:Y → Xhbij:Bijective gg':ℕ → Xhbij':Bijective g'hconv':{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConverges⊢ AbsConvergent (f ∘ g) ∧ Sum f = Sum (f ∘ g)
X:TypeY:Typef:X → ℝg:Y → Xhbij:Bijective gg':ℕ → Xhbij':Bijective g'hconv':{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg_inv:X → Yhleft:LeftInverse g_inv ghright:RightInverse g_inv g⊢ AbsConvergent (f ∘ g) ∧ Sum f = Sum (f ∘ g)
X:TypeY:Typef:X → ℝg:Y → Xhbij:Bijective gg':ℕ → Xhbij':Bijective g'hconv':{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg_inv:X → Yhleft:LeftInverse g_inv ghright:RightInverse g_inv ghbij_g_inv_g':Function.Bijective (_fvar.37554 ∘ _fvar.37523) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.37566, Function.LeftInverse.surjective _fvar.37562⟩
_fvar.37532⊢ AbsConvergent (f ∘ g) ∧ Sum f = Sum (f ∘ g)
have hident : (f ∘ g) ∘ g_inv ∘ g' = f ∘ g' := X:TypeY:Typef:X → ℝh:AbsConvergent fg:Y → Xhbij:Bijective g⊢ AbsConvergent (f ∘ g) ∧ Sum f = Sum (f ∘ g) X:TypeY:Typef:X → ℝg:Y → Xhbij:Bijective gg':ℕ → Xhbij':Bijective g'hconv':{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg_inv:X → Yhleft:LeftInverse g_inv ghright:RightInverse g_inv ghbij_g_inv_g':Function.Bijective (_fvar.37554 ∘ _fvar.37523) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.37566, Function.LeftInverse.surjective _fvar.37562⟩
_fvar.37532n:ℕ⊢ ((f ∘ g) ∘ g_inv ∘ g') n = (f ∘ g') n; All goals completed! 🐙
refine ⟨ ⟨ g_inv ∘ g', ⟨ hbij_g_inv_g', X:TypeY:Typef:X → ℝg:Y → Xhbij:Bijective gg':ℕ → Xhbij':Bijective g'hconv':{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg_inv:X → Yhleft:LeftInverse g_inv ghright:RightInverse g_inv ghbij_g_inv_g':Function.Bijective (@Function.comp ℕ _fvar.37515 _fvar.37516 _fvar.37554 _fvar.37523) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.37566, Function.LeftInverse.surjective _fvar.37562⟩
_fvar.37532hident:(_fvar.37517 ∘ _fvar.37519) ∘ @Function.comp ℕ _fvar.37515 _fvar.37516 _fvar.37554 _fvar.37523 =
_fvar.37517 ∘ _fvar.37523 :=
funext fun n =>
of_eq_true
(Eq.trans (congrArg (fun x => @_fvar.37517 x = @_fvar.37517 (@_fvar.37523 n)) (@_fvar.37566 (@_fvar.37523 n)))
(eq_self (@_fvar.37517 (@_fvar.37523 n))))⊢ { m := 0, seq := fun n => if n ≥ 0 then ((f ∘ g) ∘ g_inv ∘ g') n.toNat else 0, vanish := ⋯ }.absConverges All goals completed! 🐙 ⟩ ⟩, ?_ ⟩
have h := eq (f := f ∘ g) hbij_g_inv_g' (X:TypeY:Typef:X → ℝg:Y → Xhbij:Bijective gg':ℕ → Xhbij':Bijective g'hconv':{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg_inv:X → Yhleft:LeftInverse g_inv ghright:RightInverse g_inv ghbij_g_inv_g':Function.Bijective (@Function.comp ℕ _fvar.37515 _fvar.37516 _fvar.37554 _fvar.37523) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.37566, Function.LeftInverse.surjective _fvar.37562⟩
_fvar.37532hident:(_fvar.37517 ∘ _fvar.37519) ∘ @Function.comp ℕ _fvar.37515 _fvar.37516 _fvar.37554 _fvar.37523 =
_fvar.37517 ∘ _fvar.37523 :=
funext fun n =>
of_eq_true
(Eq.trans (congrArg (fun x => @_fvar.37517 x = @_fvar.37517 (@_fvar.37523 n)) (@_fvar.37566 (@_fvar.37523 n)))
(eq_self (@_fvar.37517 (@_fvar.37523 n))))⊢ { m := 0, seq := fun n => if n ≥ 0 then ((f ∘ g) ∘ g_inv ∘ g') n.toNat else 0, vanish := ⋯ }.absConverges All goals completed! 🐙)
X:TypeY:Typef:X → ℝg:Y → Xhbij:Bijective gg':ℕ → Xhbij':Bijective g'hconv':{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.absConvergesg_inv:X → Yhleft:LeftInverse g_inv ghright:RightInverse g_inv ghbij_g_inv_g':Function.Bijective (_fvar.37554 ∘ _fvar.37523) :=
Function.Bijective.comp ⟨Function.RightInverse.injective _fvar.37566, Function.LeftInverse.surjective _fvar.37562⟩
_fvar.37532hident:(_fvar.37517 ∘ _fvar.37519) ∘ _fvar.37554 ∘ _fvar.37523 = _fvar.37517 ∘ _fvar.37523 := ?_mvar.37730h:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g') n.toNat else 0, vanish := ⋯ }.convergesTo (Sum (f ∘ g))⊢ Sum f = Sum (f ∘ g)
All goals completed! 🐙@[simp]
theorem Finset.Icc_eq_cast (N:ℕ) : Icc 0 (N:ℤ) = map Nat.castEmbedding (.Icc 0 N) := N:ℕ⊢ Icc 0 ↑N = Finset.map Nat.castEmbedding (Icc 0 N)
N:ℕn:ℤ⊢ n ∈ Icc 0 ↑N ↔ n ∈ Finset.map Nat.castEmbedding (Icc 0 N); N:ℕn:ℤ⊢ 0 ≤ n ∧ n ≤ ↑N ↔ ∃ a ≤ N, ↑a = n; N:ℕn:ℤ⊢ 0 ≤ n ∧ n ≤ ↑N → ∃ a ≤ N, ↑a = nN:ℕn:ℤ⊢ (∃ a ≤ N, ↑a = n) → 0 ≤ n ∧ n ≤ ↑N
N:ℕn:ℤ⊢ 0 ≤ n ∧ n ≤ ↑N → ∃ a ≤ N, ↑a = n N:ℕn:ℤhn:0 ≤ nright✝:n ≤ ↑N⊢ ∃ a ≤ N, ↑a = n; N:ℕn:ℕright✝:↑n ≤ ↑N⊢ ∃ a ≤ N, ↑a = ↑n; N:ℕn:ℕright✝:↑n ≤ ↑N⊢ n ≤ N ∧ ↑n = ↑n; All goals completed! 🐙
N:ℕw✝:ℕleft✝:w✝ ≤ N⊢ 0 ≤ ↑w✝ ∧ ↑w✝ ≤ ↑N; All goals completed! 🐙theorem Finset.Icc_empty {N:ℤ} (h: ¬ N ≥ 0) : Icc 0 N = ∅ := N:ℤh:¬N ≥ 0⊢ Icc 0 N = ∅
N:ℤh:¬N ≥ 0a✝:ℤ⊢ a✝ ∈ Icc 0 N ↔ a✝ ∈ ∅; N:ℤh:¬N ≥ 0a✝:ℤ⊢ 0 ≤ a✝ → N < a✝; N:ℤh:¬N ≥ 0a✝¹:ℤa✝:0 ≤ a✝¹⊢ N < a✝¹; N:ℤa✝¹:ℤa✝:0 ≤ a✝¹h:a✝¹ ≤ N⊢ N ≥ 0; All goals completed! 🐙Теорема 8.2.2, попередня версія. Аргументи тут трохи переставлені порівняно з текстом.
theorem sum_of_sum_of_AbsConvergent_nonneg {f:ℕ × ℕ → ℝ} (hf:AbsConvergent f) (hpos: ∀ n m, 0 ≤ f (n, m)) :
(∀ n, ((fun m ↦ f (n, m)):Series).converges) ∧
(fun n ↦ ((fun m ↦ f (n, m)):Series).sum:Series).convergesTo (Sum f) := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
L
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
L
have hLpos : 0 ≤ L := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }⊢ 0 ≤ { m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.sum; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }⊢ { m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.nonneg; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }n:ℤ⊢ { m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.seq n ≥ 0; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }n:ℤh:n ≥ 0⊢ { m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.seq n ≥ 0f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }n:ℤh:¬n ≥ 0⊢ { m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.seq n ≥ 0 f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }n:ℤh:n ≥ 0⊢ { m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.seq n ≥ 0f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }n:ℤh:¬n ≥ 0⊢ { m := 0, seq := fun n => if 0 ≤ n then f (⋯.choose n.toNat) else 0, vanish := ⋯ }.seq n ≥ 0 All goals completed! 🐙; All goals completed! 🐙
have hfinsum (X: Finset (ℕ × ℕ)) : ∑ p ∈ X, f p ≤ L := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f) All goals completed! 🐙
have hfinsum' (n M:ℕ) : (a n).partial M ≤ L := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xn:ℕM:ℕ⊢ ∑ x ∈ Icc 0 M, f (n, x) ≤ L
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xn:ℕM:ℕ⊢ ∑ x ∈ Icc 0 M, f (n, x) = ∑ x ∈ Finset.map (Embedding.sectR n ℕ) (Icc 0 M), f xf:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xn:ℕM:ℕ⊢ ∑ x ∈ Finset.map (Embedding.sectR n ℕ) (Icc 0 M), f x ≤ L
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xn:ℕM:ℕ⊢ ∑ x ∈ Icc 0 M, f (n, x) = ∑ x ∈ Finset.map (Embedding.sectR n ℕ) (Icc 0 M), f x All goals completed! 🐙
All goals completed! 🐙
have hnon (n:ℕ) : (a n).nonneg := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mn:ℕ⊢ ∀ (n_1 : ℤ), 0 ≤ if 0 ≤ n_1 then f (n, n_1.toNat) else 0; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mn:ℕm:ℤ⊢ 0 ≤ if 0 ≤ m then f (n, m.toNat) else 0; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mn:ℕm:ℤh✝:0 ≤ m⊢ 0 ≤ f (n, m.toNat)f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mn:ℕm:ℤh✝:¬0 ≤ m⊢ 0 ≤ 0 f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mn:ℕm:ℤh✝:0 ≤ m⊢ 0 ≤ f (n, m.toNat)f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mn:ℕm:ℤh✝:¬0 ≤ m⊢ 0 ≤ 0 All goals completed! 🐙
have hconv (n:ℕ) : (a n).converges := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nn:ℕ⊢ ∃ M, ∀ (N : ℤ), (a n).partial N ≤ M
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nn:ℕ⊢ ∀ (N : ℤ), (a n).partial N ≤ L; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nn:ℕN:ℤ⊢ (a n).partial N ≤ L; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nn:ℕN:ℤh:N ≥ 0⊢ (a n).partial N ≤ Lf:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nn:ℕN:ℤh:¬N ≥ 0⊢ (a n).partial N ≤ L
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nn:ℕN:ℤh:N ≥ 0⊢ (a n).partial N ≤ L f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nn:ℕN:ℕ⊢ (a n).partial ↑N ≤ L; All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nn:ℕN:ℤh:¬N ≥ 0⊢ 0 ≤ L; All goals completed! 🐙
have (N M:ℤ) : ∑ n ∈ Icc 0 N, (a n.toNat).partial M ≤ L := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nN:ℤM:ℤhN:N ≥ 0⊢ ∑ n ∈ Icc 0 N, (a n.toNat).partial M ≤ Lf:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nN:ℤM:ℤhN:¬N ≥ 0⊢ ∑ n ∈ Icc 0 N, (a n.toNat).partial M ≤ L; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nN:ℤM:ℤhN:¬N ≥ 0⊢ ∑ n ∈ Icc 0 N, (a n.toNat).partial M ≤ Lf:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nN:ℤM:ℤhN:N ≥ 0⊢ ∑ n ∈ Icc 0 N, (a n.toNat).partial M ≤ L
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nN:ℤM:ℤhN:¬N ≥ 0⊢ ∑ n ∈ Icc 0 N, (a n.toNat).partial M ≤ L All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nM:ℤN:ℕ⊢ ∑ n ∈ Icc 0 ↑N, (a n.toNat).partial M ≤ L
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nM:ℤN:ℕhM:M ≥ 0⊢ ∑ n ∈ Icc 0 ↑N, (a n.toNat).partial M ≤ Lf:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nM:ℤN:ℕhM:¬M ≥ 0⊢ ∑ n ∈ Icc 0 ↑N, (a n.toNat).partial M ≤ L; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nM:ℤN:ℕhM:¬M ≥ 0⊢ ∑ n ∈ Icc 0 ↑N, (a n.toNat).partial M ≤ Lf:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nM:ℤN:ℕhM:M ≥ 0⊢ ∑ n ∈ Icc 0 ↑N, (a n.toNat).partial M ≤ L
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nM:ℤN:ℕhM:¬M ≥ 0⊢ ∑ n ∈ Icc 0 ↑N, (a n.toNat).partial M ≤ L f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nM:ℤN:ℕhM:¬M ≥ 0⊢ ∑ n ∈ Icc 0 ↑N, (a n.toNat).partial M = 0; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nM:ℤN:ℕhM:¬M ≥ 0⊢ ∑ n ∈ Icc 0 ↑N, ∑ n_1 ∈ Icc (a n.toNat).m M, (a n.toNat).seq n_1 = 0
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nM:ℤN:ℕhM:¬M ≥ 0⊢ ∀ x ∈ Icc 0 ↑N, ∑ n ∈ Icc (a x.toNat).m M, (a x.toNat).seq n = 0; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nM:ℤN:ℕhM:¬M ≥ 0n:ℤa✝:n ∈ Icc 0 ↑N⊢ ∑ n_1 ∈ Icc (a n.toNat).m M, (a n.toNat).seq n_1 = 0
All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nN:ℕM:ℕ⊢ ∑ n ∈ Icc 0 ↑N, (a n.toNat).partial ↑M ≤ L
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nN:ℕM:ℕ⊢ ∑ n ∈ Icc 0 ↑N, (a n.toNat).partial ↑M = ∑ x ∈ Icc 0 N ×ˢ Icc 0 M, f xf:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nN:ℕM:ℕ⊢ ∑ x ∈ Icc 0 N ×ˢ Icc 0 M, f x ≤ L
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nN:ℕM:ℕ⊢ ∑ n ∈ Icc 0 ↑N, (a n.toNat).partial ↑M = ∑ x ∈ Icc 0 N ×ˢ Icc 0 M, f x All goals completed! 🐙
All goals completed! 🐙
replace (N:ℤ) : ∑ n ∈ Icc 0 N, (a n.toNat).sum ≤ L := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nthis:∀ (N M : ℤ), ∑ n ∈ Finset.Icc 0 N, Chapter7.Series.partial (@_fvar.59781 n.toNat) M ≤ _fvar.59585 := fun N M => @?_mvar.102473 N MN:ℤ⊢ ∀ i ∈ Icc 0 N, Tendsto (a i.toNat).partial atTop (nhds (a i.toNat).sum)
All goals completed! 🐙
replace (N:ℤ) : (fun n ↦ (a n).sum:Series).partial N ≤ L := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nthis:∀ (N : ℤ), ∑ n ∈ Finset.Icc 0 N, Chapter7.Series.sum (@_fvar.59781 n.toNat) ≤ _fvar.59585 := fun N => @?_mvar.118395 NN:ℤn:ℤhn:n ∈ Icc 0 N⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => (a n).sum) n.toNat else 0, vanish := ⋯ }.seq n = (a n.toNat).sum; All goals completed! 🐙
have hnon' : (fun n ↦ (a n).sum:Series).nonneg := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nthis:∀ (N : ℤ),
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.partial
N ≤
_fvar.59585 :=
fun N => @?_mvar.120947 Nn:ℤ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => (a n).sum) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nthis:∀ (N : ℤ),
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.partial
N ≤
_fvar.59585 :=
fun N => @?_mvar.120947 Nn:ℤ⊢ 0 ≤ if 0 ≤ n then (a n.toNat).sum else 0; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nthis:∀ (N : ℤ),
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.partial
N ≤
_fvar.59585 :=
fun N => @?_mvar.120947 Nn:ℤh✝:0 ≤ n⊢ 0 ≤ (a n.toNat).sumf:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nthis:∀ (N : ℤ),
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.partial
N ≤
_fvar.59585 :=
fun N => @?_mvar.120947 Nn:ℤh✝:¬0 ≤ n⊢ 0 ≤ 0
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nthis:∀ (N : ℤ),
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.partial
N ≤
_fvar.59585 :=
fun N => @?_mvar.120947 Nn:ℤh✝:0 ≤ n⊢ 0 ≤ (a n.toNat).sum All goals completed! 🐙
All goals completed! 🐙
have hconv' : (fun n ↦ (a n).sum:Series).converges := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nthis:∀ (N : ℤ),
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.partial
N ≤
_fvar.59585 :=
fun N => @?_mvar.120947 Nhnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
?_mvar.132169⊢ ∃ M, ∀ (N : ℤ), { m := 0, seq := fun n => if n ≥ 0 then (fun n => (a n).sum) n.toNat else 0, vanish := ⋯ }.partial N ≤ M; All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nhnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
?_mvar.132169hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
?_mvar.135140this:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.sum ≤
_fvar.59585 :=
le_of_tendsto' (Chapter7.Series.convergesTo_sum _fvar.135141) _fvar.120948⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
L
replace : (fun n ↦ (a n).sum:Series).sum = L := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nhnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
?_mvar.132169hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
?_mvar.135140this:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.sum ≤
_fvar.59585 :=
le_of_tendsto' (Chapter7.Series.convergesTo_sum _fvar.135141) _fvar.120948⊢ ∀ ε > 0, L - ε ≤ { m := 0, seq := fun n => if n ≥ 0 then (fun n => (a n).sum) n.toNat else 0, vanish := ⋯ }.sum; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nhnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
?_mvar.132169hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
?_mvar.135140this:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.sum ≤
_fvar.59585 :=
le_of_tendsto' (Chapter7.Series.convergesTo_sum _fvar.135141) _fvar.120948ε:ℝhε:ε > 0⊢ L - ε ≤ { m := 0, seq := fun n => if n ≥ 0 then (fun n => (a n).sum) n.toNat else 0, vanish := ⋯ }.sum
replace : ∃ X, ∑ p ∈ X, f p ≥ L - ε := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nhnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
?_mvar.132169hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
?_mvar.135140ε:ℝhε:ε > 0X:Finset (ℕ × ℕ)hX:∑ p ∈ X, f p ≥ L - ε⊢ L - ε ≤ { m := 0, seq := fun n => if n ≥ 0 then (fun n => (a n).sum) n.toNat else 0, vanish := ⋯ }.sum
have : ∃ N, ∃ M, X ⊆ (Icc 0 N) ×ˢ (Icc 0 M) := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)⊢ (∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.converges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 := ?_mvar.59914hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => @?_mvar.84999 Xhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 := fun n M => @?_mvar.85053 n Mhnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) := fun n => @?_mvar.92368 nhconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) := fun n => @?_mvar.97784 nhnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
?_mvar.132169hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
?_mvar.135140ε:ℝhε:ε > 0X:Finset (ℕ × ℕ)hX:∑ p ∈ X, f p ≥ L - εN:ℕM:ℕhX':X ⊆ Icc 0 N ×ˢ Icc 0 M⊢ L - ε ≤ { m := 0, seq := fun n => if n ≥ 0 then (fun n => (a n).sum) n.toNat else 0, vanish := ⋯ }.sum
calc
_ ≤ ∑ p ∈ X, f p := hX
_ ≤ ∑ p ∈ (Icc 0 N) ×ˢ (Icc 0 M), f p := sum_le_sum_of_subset_of_nonneg hX' (f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 :=
Eq.mpr
(id
(congrArg (LE.le 0)
(Eq.trans (dite_cond_eq_true (eq_true _fvar.59575))
(congrArg Chapter7.Series.sum
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) (Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0)
(fun n => if n ≥ 0 then (_fvar.59574 ∘ Exists.choose (of_eq_true (eq_true _fvar.59575))) n.toNat else 0)
(fun n =>
if 0 ≤ n then
@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat)
else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1
(fun a =>
congrArg (fun x => (_fvar.59574 ∘ x) n.toNat)
(Exists.choose.congr_simp
(funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g)))
(of_eq_true (eq_true _fvar.59575))))
fun a => Eq.refl 0)
(Chapter8.Sum._proof_1 _fvar.59574 (of_eq_true (eq_true _fvar.59575))))))))
(Chapter7.Series.sum_of_nonneg fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_true h)))
ge_iff_le._simp_1))
(Chapter8.sum_of_sum_of_AbsConvergent_nonneg._proof_4 _fvar.59575 _fvar.59576 n h)
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_false h)))
ge_iff_le._simp_1)
(le_refl._simp_1 0)))hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => sorryhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 :=
fun n M =>
Eq.mpr
(id
(congrArg (fun x => x ≤ _fvar.59585)
(Eq.trans
(Eq.trans
(Finset.sum_congr (Chapter8.Finset.Icc_eq_cast M) fun x a =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, x.toNat))) fun a => Eq.refl 0)
(Finset.sum_map (Finset.Icc 0 M) Nat.castEmbedding fun x => if 0 ≤ x then @_fvar.59574 (n, x.toNat) else 0))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
ite_cond_eq_true (@_fvar.59574 (n, (Nat.castEmbedding x).toNat)) 0 (Nat.cast_nonneg._simp_1 x)))))
(Eq.mpr
(eq_of_heq
((fun α self a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_3 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a = a'), e_3 ≍ Eq.refl a → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_3 h => HEq.refl (a ≤ a_1)) (Eq.symm h) e'_3)
(Eq.refl a') (HEq.refl e'_3))
ℝ Real.instLE (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x))
(∑ x ∈ Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M), @_fvar.59574 x)
(of_eq_true
(Eq.trans
(congrArg (Eq (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))
(Eq.trans (Finset.sum_map (Finset.Icc 0 M) (Function.Embedding.sectR n ℕ) _fvar.59574)
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a => Eq.refl (@_fvar.59574 (n, x)))))
(eq_self (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))))
_fvar.59585))
(id (@_fvar.85000 (Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M)))))hnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) :=
fun n =>
Eq.mpr
(id
(forall_congr fun n_1 =>
Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, n_1.toNat))) fun a => Eq.refl 0))
ge_iff_le._simp_1))
fun m =>
if h : 0 ≤ m then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (of_eq_true ((fun n m => eq_true (@_fvar.59576 n m)) n m.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0))hconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) :=
fun n =>
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff (@_fvar.92369 n)))))
(Exists.intro _fvar.59585 fun N =>
if h : N ≥ 0 then
Exists.casesOn (CanLift.prf N h) fun N_1 h_1 =>
Eq.ndrec (motive := fun N => N ≥ 0 → Chapter7.Series.partial (@_fvar.59781 n) N ≤ _fvar.59585)
(fun h => @_fvar.85054 n N_1) h_1 h
else
Eq.mpr
(id
(congrArg (fun _a => _a ≤ _fvar.59585)
(Chapter7.Series.partial_of_lt
(id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(Nat.rawCast 1 + (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul N (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_zero_add
(N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero N (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr (lt_of_not_ge h))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))))))
_fvar.59915)hnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
fun n =>
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (Chapter7.Series.sum (@_fvar.59781 n.toNat))) fun a =>
Eq.refl 0))
ge_iff_le._simp_1))
(if h : 0 ≤ n then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (Chapter7.Series.sum_of_nonneg (@_fvar.92369 n.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0)))hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff _fvar.132170))))
(Exists.intro _fvar.59585 _fvar.120948)ε:ℝhε:ε > 0X:Finset (ℕ × ℕ)hX:∑ p ∈ X, f p ≥ L - εN:ℕM:ℕhX':X ⊆ Icc 0 N ×ˢ Icc 0 M⊢ ∀ i ∈ Icc 0 N ×ˢ Icc 0 M, i ∉ X → 0 ≤ f i All goals completed! 🐙)
_ = ∑ n ∈ Icc 0 N, ∑ m ∈ Icc 0 M, f (n, m) := sum_product _ _ _
_ ≤ ∑ n ∈ Icc 0 N, (a n).sum := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 :=
Eq.mpr
(id
(congrArg (LE.le 0)
(Eq.trans (dite_cond_eq_true (eq_true _fvar.59575))
(congrArg Chapter7.Series.sum
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) (Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0)
(fun n => if n ≥ 0 then (_fvar.59574 ∘ Exists.choose (of_eq_true (eq_true _fvar.59575))) n.toNat else 0)
(fun n =>
if 0 ≤ n then
@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat)
else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1
(fun a =>
congrArg (fun x => (_fvar.59574 ∘ x) n.toNat)
(Exists.choose.congr_simp
(funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g)))
(of_eq_true (eq_true _fvar.59575))))
fun a => Eq.refl 0)
(Chapter8.Sum._proof_1 _fvar.59574 (of_eq_true (eq_true _fvar.59575))))))))
(Chapter7.Series.sum_of_nonneg fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_true h)))
ge_iff_le._simp_1))
(Chapter8.sum_of_sum_of_AbsConvergent_nonneg._proof_4 _fvar.59575 _fvar.59576 n h)
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_false h)))
ge_iff_le._simp_1)
(le_refl._simp_1 0)))hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => sorryhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 :=
fun n M =>
Eq.mpr
(id
(congrArg (fun x => x ≤ _fvar.59585)
(Eq.trans
(Eq.trans
(Finset.sum_congr (Chapter8.Finset.Icc_eq_cast M) fun x a =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, x.toNat))) fun a => Eq.refl 0)
(Finset.sum_map (Finset.Icc 0 M) Nat.castEmbedding fun x => if 0 ≤ x then @_fvar.59574 (n, x.toNat) else 0))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
ite_cond_eq_true (@_fvar.59574 (n, (Nat.castEmbedding x).toNat)) 0 (Nat.cast_nonneg._simp_1 x)))))
(Eq.mpr
(eq_of_heq
((fun α self a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_3 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a = a'), e_3 ≍ Eq.refl a → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_3 h => HEq.refl (a ≤ a_1)) (Eq.symm h) e'_3)
(Eq.refl a') (HEq.refl e'_3))
ℝ Real.instLE (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x))
(∑ x ∈ Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M), @_fvar.59574 x)
(of_eq_true
(Eq.trans
(congrArg (Eq (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))
(Eq.trans (Finset.sum_map (Finset.Icc 0 M) (Function.Embedding.sectR n ℕ) _fvar.59574)
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a => Eq.refl (@_fvar.59574 (n, x)))))
(eq_self (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))))
_fvar.59585))
(id (@_fvar.85000 (Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M)))))hnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) :=
fun n =>
Eq.mpr
(id
(forall_congr fun n_1 =>
Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, n_1.toNat))) fun a => Eq.refl 0))
ge_iff_le._simp_1))
fun m =>
if h : 0 ≤ m then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (of_eq_true ((fun n m => eq_true (@_fvar.59576 n m)) n m.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0))hconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) :=
fun n =>
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff (@_fvar.92369 n)))))
(Exists.intro _fvar.59585 fun N =>
if h : N ≥ 0 then
Exists.casesOn (CanLift.prf N h) fun N_1 h_1 =>
Eq.ndrec (motive := fun N => N ≥ 0 → Chapter7.Series.partial (@_fvar.59781 n) N ≤ _fvar.59585)
(fun h => @_fvar.85054 n N_1) h_1 h
else
Eq.mpr
(id
(congrArg (fun _a => _a ≤ _fvar.59585)
(Chapter7.Series.partial_of_lt
(id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(Nat.rawCast 1 + (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul N (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_zero_add
(N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero N (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr (lt_of_not_ge h))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))))))
_fvar.59915)hnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
fun n =>
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (Chapter7.Series.sum (@_fvar.59781 n.toNat))) fun a =>
Eq.refl 0))
ge_iff_le._simp_1))
(if h : 0 ≤ n then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (Chapter7.Series.sum_of_nonneg (@_fvar.92369 n.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0)))hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff _fvar.132170))))
(Exists.intro _fvar.59585 _fvar.120948)ε:ℝhε:ε > 0X:Finset (ℕ × ℕ)hX:∑ p ∈ X, f p ≥ L - εN:ℕM:ℕhX':X ⊆ Icc 0 N ×ˢ Icc 0 M⊢ ∑ n ∈ Icc 0 N, ∑ m ∈ Icc 0 M, f (n, m) ≤ ∑ n ∈ Icc 0 N, (a n).sum
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 :=
Eq.mpr
(id
(congrArg (LE.le 0)
(Eq.trans (dite_cond_eq_true (eq_true _fvar.59575))
(congrArg Chapter7.Series.sum
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) (Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0)
(fun n => if n ≥ 0 then (_fvar.59574 ∘ Exists.choose (of_eq_true (eq_true _fvar.59575))) n.toNat else 0)
(fun n =>
if 0 ≤ n then
@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat)
else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1
(fun a =>
congrArg (fun x => (_fvar.59574 ∘ x) n.toNat)
(Exists.choose.congr_simp
(funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g)))
(of_eq_true (eq_true _fvar.59575))))
fun a => Eq.refl 0)
(Chapter8.Sum._proof_1 _fvar.59574 (of_eq_true (eq_true _fvar.59575))))))))
(Chapter7.Series.sum_of_nonneg fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_true h)))
ge_iff_le._simp_1))
(Chapter8.sum_of_sum_of_AbsConvergent_nonneg._proof_4 _fvar.59575 _fvar.59576 n h)
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_false h)))
ge_iff_le._simp_1)
(le_refl._simp_1 0)))hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => sorryhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 :=
fun n M =>
Eq.mpr
(id
(congrArg (fun x => x ≤ _fvar.59585)
(Eq.trans
(Eq.trans
(Finset.sum_congr (Chapter8.Finset.Icc_eq_cast M) fun x a =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, x.toNat))) fun a => Eq.refl 0)
(Finset.sum_map (Finset.Icc 0 M) Nat.castEmbedding fun x => if 0 ≤ x then @_fvar.59574 (n, x.toNat) else 0))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
ite_cond_eq_true (@_fvar.59574 (n, (Nat.castEmbedding x).toNat)) 0 (Nat.cast_nonneg._simp_1 x)))))
(Eq.mpr
(eq_of_heq
((fun α self a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_3 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a = a'), e_3 ≍ Eq.refl a → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_3 h => HEq.refl (a ≤ a_1)) (Eq.symm h) e'_3)
(Eq.refl a') (HEq.refl e'_3))
ℝ Real.instLE (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x))
(∑ x ∈ Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M), @_fvar.59574 x)
(of_eq_true
(Eq.trans
(congrArg (Eq (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))
(Eq.trans (Finset.sum_map (Finset.Icc 0 M) (Function.Embedding.sectR n ℕ) _fvar.59574)
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a => Eq.refl (@_fvar.59574 (n, x)))))
(eq_self (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))))
_fvar.59585))
(id (@_fvar.85000 (Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M)))))hnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) :=
fun n =>
Eq.mpr
(id
(forall_congr fun n_1 =>
Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, n_1.toNat))) fun a => Eq.refl 0))
ge_iff_le._simp_1))
fun m =>
if h : 0 ≤ m then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (of_eq_true ((fun n m => eq_true (@_fvar.59576 n m)) n m.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0))hconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) :=
fun n =>
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff (@_fvar.92369 n)))))
(Exists.intro _fvar.59585 fun N =>
if h : N ≥ 0 then
Exists.casesOn (CanLift.prf N h) fun N_1 h_1 =>
Eq.ndrec (motive := fun N => N ≥ 0 → Chapter7.Series.partial (@_fvar.59781 n) N ≤ _fvar.59585)
(fun h => @_fvar.85054 n N_1) h_1 h
else
Eq.mpr
(id
(congrArg (fun _a => _a ≤ _fvar.59585)
(Chapter7.Series.partial_of_lt
(id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(Nat.rawCast 1 + (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul N (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_zero_add
(N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero N (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr (lt_of_not_ge h))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))))))
_fvar.59915)hnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
fun n =>
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (Chapter7.Series.sum (@_fvar.59781 n.toNat))) fun a =>
Eq.refl 0))
ge_iff_le._simp_1))
(if h : 0 ≤ n then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (Chapter7.Series.sum_of_nonneg (@_fvar.92369 n.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0)))hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff _fvar.132170))))
(Exists.intro _fvar.59585 _fvar.120948)ε:ℝhε:ε > 0X:Finset (ℕ × ℕ)hX:∑ p ∈ X, f p ≥ L - εN:ℕM:ℕhX':X ⊆ Icc 0 N ×ˢ Icc 0 M⊢ ∀ i ∈ Icc 0 N, ∑ m ∈ Icc 0 M, f (i, m) ≤ (a i).sum; f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 :=
Eq.mpr
(id
(congrArg (LE.le 0)
(Eq.trans (dite_cond_eq_true (eq_true _fvar.59575))
(congrArg Chapter7.Series.sum
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) (Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0)
(fun n => if n ≥ 0 then (_fvar.59574 ∘ Exists.choose (of_eq_true (eq_true _fvar.59575))) n.toNat else 0)
(fun n =>
if 0 ≤ n then
@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat)
else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1
(fun a =>
congrArg (fun x => (_fvar.59574 ∘ x) n.toNat)
(Exists.choose.congr_simp
(funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g)))
(of_eq_true (eq_true _fvar.59575))))
fun a => Eq.refl 0)
(Chapter8.Sum._proof_1 _fvar.59574 (of_eq_true (eq_true _fvar.59575))))))))
(Chapter7.Series.sum_of_nonneg fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_true h)))
ge_iff_le._simp_1))
(Chapter8.sum_of_sum_of_AbsConvergent_nonneg._proof_4 _fvar.59575 _fvar.59576 n h)
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_false h)))
ge_iff_le._simp_1)
(le_refl._simp_1 0)))hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => sorryhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 :=
fun n M =>
Eq.mpr
(id
(congrArg (fun x => x ≤ _fvar.59585)
(Eq.trans
(Eq.trans
(Finset.sum_congr (Chapter8.Finset.Icc_eq_cast M) fun x a =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, x.toNat))) fun a => Eq.refl 0)
(Finset.sum_map (Finset.Icc 0 M) Nat.castEmbedding fun x => if 0 ≤ x then @_fvar.59574 (n, x.toNat) else 0))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
ite_cond_eq_true (@_fvar.59574 (n, (Nat.castEmbedding x).toNat)) 0 (Nat.cast_nonneg._simp_1 x)))))
(Eq.mpr
(eq_of_heq
((fun α self a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_3 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a = a'), e_3 ≍ Eq.refl a → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_3 h => HEq.refl (a ≤ a_1)) (Eq.symm h) e'_3)
(Eq.refl a') (HEq.refl e'_3))
ℝ Real.instLE (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x))
(∑ x ∈ Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M), @_fvar.59574 x)
(of_eq_true
(Eq.trans
(congrArg (Eq (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))
(Eq.trans (Finset.sum_map (Finset.Icc 0 M) (Function.Embedding.sectR n ℕ) _fvar.59574)
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a => Eq.refl (@_fvar.59574 (n, x)))))
(eq_self (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))))
_fvar.59585))
(id (@_fvar.85000 (Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M)))))hnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) :=
fun n =>
Eq.mpr
(id
(forall_congr fun n_1 =>
Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, n_1.toNat))) fun a => Eq.refl 0))
ge_iff_le._simp_1))
fun m =>
if h : 0 ≤ m then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (of_eq_true ((fun n m => eq_true (@_fvar.59576 n m)) n m.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0))hconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) :=
fun n =>
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff (@_fvar.92369 n)))))
(Exists.intro _fvar.59585 fun N =>
if h : N ≥ 0 then
Exists.casesOn (CanLift.prf N h) fun N_1 h_1 =>
Eq.ndrec (motive := fun N => N ≥ 0 → Chapter7.Series.partial (@_fvar.59781 n) N ≤ _fvar.59585)
(fun h => @_fvar.85054 n N_1) h_1 h
else
Eq.mpr
(id
(congrArg (fun _a => _a ≤ _fvar.59585)
(Chapter7.Series.partial_of_lt
(id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(Nat.rawCast 1 + (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul N (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_zero_add
(N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero N (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr (lt_of_not_ge h))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))))))
_fvar.59915)hnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
fun n =>
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (Chapter7.Series.sum (@_fvar.59781 n.toNat))) fun a =>
Eq.refl 0))
ge_iff_le._simp_1))
(if h : 0 ≤ n then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (Chapter7.Series.sum_of_nonneg (@_fvar.92369 n.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0)))hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff _fvar.132170))))
(Exists.intro _fvar.59585 _fvar.120948)ε:ℝhε:ε > 0X:Finset (ℕ × ℕ)hX:∑ p ∈ X, f p ≥ L - εN:ℕM:ℕhX':X ⊆ Icc 0 N ×ˢ Icc 0 Mn:ℕa✝:n ∈ Icc 0 N⊢ ∑ m ∈ Icc 0 M, f (n, m) ≤ (a n).sum
f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 :=
Eq.mpr
(id
(congrArg (LE.le 0)
(Eq.trans (dite_cond_eq_true (eq_true _fvar.59575))
(congrArg Chapter7.Series.sum
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) (Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0)
(fun n => if n ≥ 0 then (_fvar.59574 ∘ Exists.choose (of_eq_true (eq_true _fvar.59575))) n.toNat else 0)
(fun n =>
if 0 ≤ n then
@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat)
else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1
(fun a =>
congrArg (fun x => (_fvar.59574 ∘ x) n.toNat)
(Exists.choose.congr_simp
(funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g)))
(of_eq_true (eq_true _fvar.59575))))
fun a => Eq.refl 0)
(Chapter8.Sum._proof_1 _fvar.59574 (of_eq_true (eq_true _fvar.59575))))))))
(Chapter7.Series.sum_of_nonneg fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_true h)))
ge_iff_le._simp_1))
(Chapter8.sum_of_sum_of_AbsConvergent_nonneg._proof_4 _fvar.59575 _fvar.59576 n h)
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_false h)))
ge_iff_le._simp_1)
(le_refl._simp_1 0)))hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => sorryhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 :=
fun n M =>
Eq.mpr
(id
(congrArg (fun x => x ≤ _fvar.59585)
(Eq.trans
(Eq.trans
(Finset.sum_congr (Chapter8.Finset.Icc_eq_cast M) fun x a =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, x.toNat))) fun a => Eq.refl 0)
(Finset.sum_map (Finset.Icc 0 M) Nat.castEmbedding fun x => if 0 ≤ x then @_fvar.59574 (n, x.toNat) else 0))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
ite_cond_eq_true (@_fvar.59574 (n, (Nat.castEmbedding x).toNat)) 0 (Nat.cast_nonneg._simp_1 x)))))
(Eq.mpr
(eq_of_heq
((fun α self a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_3 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a = a'), e_3 ≍ Eq.refl a → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_3 h => HEq.refl (a ≤ a_1)) (Eq.symm h) e'_3)
(Eq.refl a') (HEq.refl e'_3))
ℝ Real.instLE (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x))
(∑ x ∈ Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M), @_fvar.59574 x)
(of_eq_true
(Eq.trans
(congrArg (Eq (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))
(Eq.trans (Finset.sum_map (Finset.Icc 0 M) (Function.Embedding.sectR n ℕ) _fvar.59574)
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a => Eq.refl (@_fvar.59574 (n, x)))))
(eq_self (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))))
_fvar.59585))
(id (@_fvar.85000 (Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M)))))hnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) :=
fun n =>
Eq.mpr
(id
(forall_congr fun n_1 =>
Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, n_1.toNat))) fun a => Eq.refl 0))
ge_iff_le._simp_1))
fun m =>
if h : 0 ≤ m then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (of_eq_true ((fun n m => eq_true (@_fvar.59576 n m)) n m.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0))hconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) :=
fun n =>
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff (@_fvar.92369 n)))))
(Exists.intro _fvar.59585 fun N =>
if h : N ≥ 0 then
Exists.casesOn (CanLift.prf N h) fun N_1 h_1 =>
Eq.ndrec (motive := fun N => N ≥ 0 → Chapter7.Series.partial (@_fvar.59781 n) N ≤ _fvar.59585)
(fun h => @_fvar.85054 n N_1) h_1 h
else
Eq.mpr
(id
(congrArg (fun _a => _a ≤ _fvar.59585)
(Chapter7.Series.partial_of_lt
(id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(Nat.rawCast 1 + (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul N (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_zero_add
(N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero N (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr (lt_of_not_ge h))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))))))
_fvar.59915)hnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
fun n =>
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (Chapter7.Series.sum (@_fvar.59781 n.toNat))) fun a =>
Eq.refl 0))
ge_iff_le._simp_1))
(if h : 0 ≤ n then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (Chapter7.Series.sum_of_nonneg (@_fvar.92369 n.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0)))hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff _fvar.132170))))
(Exists.intro _fvar.59585 _fvar.120948)ε:ℝhε:ε > 0X:Finset (ℕ × ℕ)hX:∑ p ∈ X, f p ≥ L - εN:ℕM:ℕhX':X ⊆ Icc 0 N ×ˢ Icc 0 Mn:ℕa✝:n ∈ Icc 0 N⊢ ∑ m ∈ Icc 0 M, f (n, m) = (a n).partial ↑M
All goals completed! 🐙
_ = (fun n ↦ (a n).sum:Series).partial N := f:ℕ × ℕ → ℝhf:AbsConvergent fhpos:∀ (n m : ℕ), 0 ≤ f (n, m)L:ℝ := Chapter8.Sum _fvar.59574a:ℕ → Chapter7.Series := fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (@fun m => @_fvar.59574 (n, m)) n_1.toNat else 0, vanish := ⋯ }hLpos:0 ≤ _fvar.59585 :=
Eq.mpr
(id
(congrArg (LE.le 0)
(Eq.trans (dite_cond_eq_true (eq_true _fvar.59575))
(congrArg Chapter7.Series.sum
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) (Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0)
(fun n => if n ≥ 0 then (_fvar.59574 ∘ Exists.choose (of_eq_true (eq_true _fvar.59575))) n.toNat else 0)
(fun n =>
if 0 ≤ n then
@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat)
else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1
(fun a =>
congrArg (fun x => (_fvar.59574 ∘ x) n.toNat)
(Exists.choose.congr_simp
(funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g)))
(of_eq_true (eq_true _fvar.59575))))
fun a => Eq.refl 0)
(Chapter8.Sum._proof_1 _fvar.59574 (of_eq_true (eq_true _fvar.59575))))))))
(Chapter7.Series.sum_of_nonneg fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_true h)))
ge_iff_le._simp_1))
(Chapter8.sum_of_sum_of_AbsConvergent_nonneg._proof_4 _fvar.59575 _fvar.59576 n h)
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false
(@_fvar.59574
(((funext fun g =>
congrArg (fun x => Function.Bijective g ∧ x.absConverges)
((fun m m_1 e_m =>
Eq.rec (motive := fun m_2 e_m =>
∀ (seq seq_1 : ℤ → ℝ) (e_seq : seq = seq_1) (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m_2, seq := seq_1,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_1 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq) e_m })
(fun seq seq_1 e_seq =>
Eq.rec (motive := fun seq_2 e_seq =>
∀ (vanish : ∀ n < m, seq n = 0),
{ m := m, seq := seq, vanish := vanish } =
{ m := m, seq := seq_2,
vanish :=
Eq.ndrec (motive := fun m => ∀ n < m, seq_2 n = 0)
(Eq.ndrec (motive := fun seq => ∀ n < m, seq n = 0) vanish e_seq)
(Eq.refl m) })
(fun vanish => Eq.refl { m := m, seq := seq, vanish := vanish }) e_seq)
e_m)
0 0 (Eq.refl 0) (fun n => if n ≥ 0 then (_fvar.59574 ∘ g) n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.59574 (g n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (g n.toNat))) fun a =>
Eq.refl 0)
(Chapter8.AbsConvergent._proof_1 _fvar.59574 g))) ▸
of_eq_true (eq_true _fvar.59575)).choose
n.toNat))
0 (eq_false h)))
ge_iff_le._simp_1)
(le_refl._simp_1 0)))hfinsum:∀ (X : Finset (ℕ × ℕ)), ∑ p ∈ X, @_fvar.59574 p ≤ _fvar.59585 := fun X => sorryhfinsum':∀ (n M : ℕ), Chapter7.Series.partial (@_fvar.59781 n) ↑M ≤ _fvar.59585 :=
fun n M =>
Eq.mpr
(id
(congrArg (fun x => x ≤ _fvar.59585)
(Eq.trans
(Eq.trans
(Finset.sum_congr (Chapter8.Finset.Icc_eq_cast M) fun x a =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, x.toNat))) fun a => Eq.refl 0)
(Finset.sum_map (Finset.Icc 0 M) Nat.castEmbedding fun x => if 0 ≤ x then @_fvar.59574 (n, x.toNat) else 0))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
ite_cond_eq_true (@_fvar.59574 (n, (Nat.castEmbedding x).toNat)) 0 (Nat.cast_nonneg._simp_1 x)))))
(Eq.mpr
(eq_of_heq
((fun α self a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_3 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a = a'), e_3 ≍ Eq.refl a → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_3 h => HEq.refl (a ≤ a_1)) (Eq.symm h) e'_3)
(Eq.refl a') (HEq.refl e'_3))
ℝ Real.instLE (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x))
(∑ x ∈ Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M), @_fvar.59574 x)
(of_eq_true
(Eq.trans
(congrArg (Eq (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))
(Eq.trans (Finset.sum_map (Finset.Icc 0 M) (Function.Embedding.sectR n ℕ) _fvar.59574)
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a => Eq.refl (@_fvar.59574 (n, x)))))
(eq_self (∑ x ∈ Finset.Icc 0 M, @_fvar.59574 (n, x)))))
_fvar.59585))
(id (@_fvar.85000 (Finset.map (Function.Embedding.sectR n ℕ) (Finset.Icc 0 M)))))hnon:∀ (n : ℕ), Chapter7.Series.nonneg (@_fvar.59781 n) :=
fun n =>
Eq.mpr
(id
(forall_congr fun n_1 =>
Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.59574 (n, n_1.toNat))) fun a => Eq.refl 0))
ge_iff_le._simp_1))
fun m =>
if h : 0 ≤ m then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (of_eq_true ((fun n m => eq_true (@_fvar.59576 n m)) n m.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0))hconv:∀ (n : ℕ), Chapter7.Series.converges (@_fvar.59781 n) :=
fun n =>
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff (@_fvar.92369 n)))))
(Exists.intro _fvar.59585 fun N =>
if h : N ≥ 0 then
Exists.casesOn (CanLift.prf N h) fun N_1 h_1 =>
Eq.ndrec (motive := fun N => N ≥ 0 → Chapter7.Series.partial (@_fvar.59781 n) N ≤ _fvar.59585)
(fun h => @_fvar.85054 n N_1) h_1 h
else
Eq.mpr
(id
(congrArg (fun _a => _a ≤ _fvar.59585)
(Chapter7.Series.partial_of_lt
(id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1)))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 1)))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(Nat.rawCast 1 + (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_zero_add (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf N)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul N (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_zero_add
(N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero N (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℤ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℤ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le
(neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr (lt_of_not_ge h))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))))))
_fvar.59915)hnon':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.nonneg :=
fun n =>
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (Chapter7.Series.sum (@_fvar.59781 n.toNat))) fun a =>
Eq.refl 0))
ge_iff_le._simp_1))
(if h : 0 ≤ n then
Eq.mpr (id (congrArg (LE.le 0) (if_pos h))) (Chapter7.Series.sum_of_nonneg (@_fvar.92369 n.toNat))
else Eq.mpr (id (congrArg (LE.le 0) (if_neg h))) (of_eq_true (le_refl._simp_1 0)))hconv':{ m := 0, seq := fun n => if n ≥ 0 then (fun n => Chapter7.Series.sum (@_fvar.59781 n)) n.toNat else 0,
vanish := ⋯ }.converges :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (Chapter7.Series.converges_of_nonneg_iff _fvar.132170))))
(Exists.intro _fvar.59585 _fvar.120948)ε:ℝhε:ε > 0X:Finset (ℕ × ℕ)hX:∑ p ∈ X, f p ≥ L - εN:ℕM:ℕhX':X ⊆ Icc 0 N ×ˢ Icc 0 M⊢ ∑ n ∈ Icc 0 N, (a n).sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => (a n).sum) n.toNat else 0, vanish := ⋯ }.partial ↑N All goals completed! 🐙
_ ≤ _ := partial_le_sum_of_nonneg hnon' hconv' _
All goals completed! 🐙Теорема 8.2.2, друга версія
theorem sum_of_sum_of_AbsConvergent {f:ℕ × ℕ → ℝ} (hf:AbsConvergent f) :
(∀ n, ((fun m ↦ f (n, m)):Series).absConverges) ∧
(fun n ↦ ((fun m ↦ f (n, m)):Series).sum:Series).convergesTo (Sum f) := f:ℕ × ℕ → ℝhf:AbsConvergent f⊢ (∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0⊢ (∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0⊢ (∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
have hfplus_nonneg : ∀ n m, 0 ≤ fplus (n, m) := f:ℕ × ℕ → ℝhf:AbsConvergent f⊢ (∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f) f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0n:ℕm:ℕ⊢ 0 ≤ fplus (n, m); All goals completed! 🐙
have hfminus_nonneg : ∀ n m, 0 ≤ fminus (n, m) := f:ℕ × ℕ → ℝhf:AbsConvergent f⊢ (∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f) f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541n:ℕm:ℕ⊢ 0 ≤ fminus (n, m); All goals completed! 🐙
have hdiff : f = fplus - fminus := f:ℕ × ℕ → ℝhf:AbsConvergent f⊢ (∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f) All goals completed! 🐙
have hfplus_conv : AbsConvergent fplus := f:ℕ × ℕ → ℝhf:AbsConvergent f⊢ (∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f) All goals completed! 🐙
have hfminus_conv : AbsConvergent fminus := f:ℕ × ℕ → ℝhf:AbsConvergent f⊢ (∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f) All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)⊢ (∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ (∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ ∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ { m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ ∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)n:ℕ⊢ { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.absConverges
All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ { m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } =
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } -
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ Sum f = Sum fplus - Sum fminus
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ { m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } =
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } -
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } -- зустрів несподівані труднощі з визначальною еквівалентністю тут.
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ { m := 0,
seq := fun n =>
if 0 ≤ n then
{ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) - fminus (n.toNat, n_1.toNat) else 0,
vanish := ⋯ }.sum
else 0,
vanish := ⋯ } =
{ m := 0,
seq := fun n =>
if 0 ≤ n then { m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }.sum
else 0,
vanish := ⋯ } -
{ m := 0,
seq := fun n =>
if 0 ≤ n then { m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }.sum
else 0,
vanish := ⋯ }
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ { m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => (fplus - fminus) (n, m)) n_1.toNat else 0,
vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } =
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } -
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ { m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } -
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } =
{ m := 0,
seq := fun n =>
if n ≥ 0 then
((fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum) -
fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ { m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => (fplus - fminus) (n, m)) n_1.toNat else 0,
vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } =
{ m := 0,
seq := fun n =>
if n ≥ 0 then
((fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum) -
fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)⊢ { m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } -
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } =
{ m := 0,
seq := fun n =>
if n ≥ 0 then
((fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum) -
fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ } All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤ⊢ (fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => (fplus - fminus) (n, m)) n_1.toNat else 0,
vanish := ⋯ }.sum)
n.toNat =
((fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum) -
fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat; f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤ⊢ { m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) - fminus (n.toNat, n_1.toNat) else 0,
vanish := ⋯ }.sum =
{ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }.sum -
{ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }.sum
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤ⊢ 0 =
({ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ } -
{ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }).mf:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤm:ℤ⊢ (if 0 ≤ m then fplus (n.toNat, m.toNat) - fminus (n.toNat, m.toNat) else 0) =
({ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ } -
{ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }).seq
mf:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤ⊢ { m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }.convergesf:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤ⊢ { m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }.converges; f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤm:ℤ⊢ (if 0 ≤ m then fplus (n.toNat, m.toNat) - fminus (n.toNat, m.toNat) else 0) =
({ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ } -
{ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }).seq
mf:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤ⊢ { m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }.convergesf:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤ⊢ { m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }.converges
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤm:ℤh:0 ≤ m⊢ fplus (n.toNat, m.toNat) - fminus (n.toNat, m.toNat) =
({ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ } -
{ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }).seq
mf:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤm:ℤh:¬0 ≤ m⊢ 0 =
({ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ } -
{ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }).seq
m f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤm:ℤh:0 ≤ m⊢ fplus (n.toNat, m.toNat) - fminus (n.toNat, m.toNat) =
({ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ } -
{ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }).seq
mf:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤm:ℤh:¬0 ≤ m⊢ 0 =
({ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ } -
{ m := 0, seq := fun n_1 => if 0 ≤ n_1 then fminus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }).seq
m All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)x✝:ℤn:ℤ⊢ { m := 0, seq := fun n_1 => if 0 ≤ n_1 then fplus (n.toNat, n_1.toNat) else 0, vanish := ⋯ }.converges All goals completed! 🐙
All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)g:ℕ → ℕ × ℕhg:Bijective gright✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ Sum f = Sum fplus - Sum fminus
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)g:ℕ → ℕ × ℕhg:Bijective gright✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesh1:?_mvar.243602 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.168247)⊢ Sum f = Sum fplus - Sum fminus
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)g:ℕ → ℕ × ℕhg:Bijective gright✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesh1:?_mvar.243602 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.168247)hplus:?_mvar.243653 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196520)⊢ Sum f = Sum fplus - Sum fminus
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)g:ℕ → ℕ × ℕhg:Bijective gright✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesh1:?_mvar.243602 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.168247)hplus:?_mvar.243653 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196520)hminus:?_mvar.243677 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196531)⊢ Sum f = Sum fplus - Sum fminus
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)g:ℕ → ℕ × ℕhg:Bijective gright✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesh1:?_mvar.243602 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.168247)hplus:?_mvar.243653 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196520)hminus:?_mvar.243677 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196531)⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.convergesTo (Sum fplus - Sum fminus)
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)g:ℕ → ℕ × ℕhg:Bijective gright✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesh1:?_mvar.243602 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.168247)hplus:?_mvar.243653 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196520)hminus:?_mvar.243677 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196531)n:ℤ⊢ (if n ≥ 0 then (f ∘ g) n.toNat else 0) =
({ m := 0, seq := fun n => if n ≥ 0 then (fplus ∘ g) n.toNat else 0, vanish := ⋯ } -
{ m := 0, seq := fun n => if n ≥ 0 then (fminus ∘ g) n.toNat else 0, vanish := ⋯ }).seq
n
f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)g:ℕ → ℕ × ℕhg:Bijective gright✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesh1:?_mvar.243602 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.168247)hplus:?_mvar.243653 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196520)hminus:?_mvar.243677 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196531)n:ℤh:n ≥ 0⊢ (f ∘ g) n.toNat =
({ m := 0, seq := fun n => if n ≥ 0 then (fplus ∘ g) n.toNat else 0, vanish := ⋯ } -
{ m := 0, seq := fun n => if n ≥ 0 then (fminus ∘ g) n.toNat else 0, vanish := ⋯ }).seq
nf:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)g:ℕ → ℕ × ℕhg:Bijective gright✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesh1:?_mvar.243602 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.168247)hplus:?_mvar.243653 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196520)hminus:?_mvar.243677 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196531)n:ℤh:¬n ≥ 0⊢ 0 =
({ m := 0, seq := fun n => if n ≥ 0 then (fplus ∘ g) n.toNat else 0, vanish := ⋯ } -
{ m := 0, seq := fun n => if n ≥ 0 then (fminus ∘ g) n.toNat else 0, vanish := ⋯ }).seq
n f:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)g:ℕ → ℕ × ℕhg:Bijective gright✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesh1:?_mvar.243602 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.168247)hplus:?_mvar.243653 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196520)hminus:?_mvar.243677 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196531)n:ℤh:n ≥ 0⊢ (f ∘ g) n.toNat =
({ m := 0, seq := fun n => if n ≥ 0 then (fplus ∘ g) n.toNat else 0, vanish := ⋯ } -
{ m := 0, seq := fun n => if n ≥ 0 then (fminus ∘ g) n.toNat else 0, vanish := ⋯ }).seq
nf:ℕ × ℕ → ℝhf:AbsConvergent ffplus:ℕ × ℕ → ℝ := _fvar.168246 ⊔ 0fminus:ℕ × ℕ → ℝ := -_fvar.168246 ⊔ 0hfplus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168330 (n, m) := ?_mvar.168541hfminus_nonneg:∀ (n m : ℕ), 0 ≤ @_fvar.168422 (n, m) := ?_mvar.182542hdiff:_fvar.168246 = _fvar.168330 - _fvar.168422 := ?_mvar.196505hfplus_conv:Chapter8.AbsConvergent _fvar.168330 := ?_mvar.196519hfminus_conv:Chapter8.AbsConvergent _fvar.168422 := ?_mvar.196530hfplus_conv':∀ (n : ℕ), { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfplus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fplus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fplus)hfminus_conv':∀ (n : ℕ),
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.convergeshfminus_sum:{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n =>
{ m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => fminus (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum fminus)g:ℕ → ℕ × ℕhg:Bijective gright✝:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConvergesh1:?_mvar.243602 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.168247)hplus:?_mvar.243653 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196520)hminus:?_mvar.243677 := Chapter8.Sum.eq _fvar.243487 (Chapter8.AbsConvergent.comp _fvar.243487 _fvar.196531)n:ℤh:¬n ≥ 0⊢ 0 =
({ m := 0, seq := fun n => if n ≥ 0 then (fplus ∘ g) n.toNat else 0, vanish := ⋯ } -
{ m := 0, seq := fun n => if n ≥ 0 then (fminus ∘ g) n.toNat else 0, vanish := ⋯ }).seq
n All goals completed! 🐙Теорема 8.2.2, третя версія
theorem sum_of_sum_of_AbsConvergent' {f:ℕ × ℕ → ℝ} (hf:AbsConvergent f) :
(∀ m, ((fun n ↦ f (n, m)):Series).absConverges) ∧
(fun m ↦ ((fun n ↦ f (n, m)):Series).sum:Series).convergesTo (Sum f) := f:ℕ × ℕ → ℝhf:AbsConvergent f⊢ (∀ (m : ℕ), { m := 0, seq := fun n => if n ≥ 0 then (fun n => f (n, m)) n.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun m => { m := 0, seq := fun n => if n ≥ 0 then (fun n => f (n, m)) n.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fπ:ℕ × ℕ → ℕ × ℕ := fun p => (p.2, p.1)⊢ (∀ (m : ℕ), { m := 0, seq := fun n => if n ≥ 0 then (fun n => f (n, m)) n.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun m => { m := 0, seq := fun n => if n ≥ 0 then (fun n => f (n, m)) n.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fπ:ℕ × ℕ → ℕ × ℕ := fun p => (p.2, p.1)hπ:Function.Bijective _fvar.254300 := Function.Involutive.bijective (congrFun rfl)⊢ (∀ (m : ℕ), { m := 0, seq := fun n => if n ≥ 0 then (fun n => f (n, m)) n.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun m => { m := 0, seq := fun n => if n ≥ 0 then (fun n => f (n, m)) n.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fπ:ℕ × ℕ → ℕ × ℕ := fun p => (p.2, p.1)hπ:Function.Bijective _fvar.254300 := Function.Involutive.bijective (congrFun rfl)g:ℕ → ℕ × ℕhg:Bijective ghconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ (∀ (m : ℕ), { m := 0, seq := fun n => if n ≥ 0 then (fun n => f (n, m)) n.toNat else 0, vanish := ⋯ }.absConverges) ∧
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun m => { m := 0, seq := fun n => if n ≥ 0 then (fun n => f (n, m)) n.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Sum f)
f:ℕ × ℕ → ℝhf:AbsConvergent fπ:ℕ × ℕ → ℕ × ℕ := fun p => (p.2, p.1)hπ:Function.Bijective _fvar.254300 := Function.Involutive.bijective (congrFun rfl)g:ℕ → ℕ × ℕhg:Bijective ghconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ Sum f = Sum (f ∘ π)f:ℕ × ℕ → ℝhf:AbsConvergent fπ:ℕ × ℕ → ℕ × ℕ := fun p => (p.2, p.1)hπ:Function.Bijective _fvar.254300 := Function.Involutive.bijective (congrFun rfl)g:ℕ → ℕ × ℕhg:Bijective ghconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ AbsConvergent (f ∘ π)
f:ℕ × ℕ → ℝhf:AbsConvergent fπ:ℕ × ℕ → ℕ × ℕ := fun p => (p.2, p.1)hπ:Function.Bijective _fvar.254300 := Function.Involutive.bijective (congrFun rfl)g:ℕ → ℕ × ℕhg:Bijective ghconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ Sum f = Sum (f ∘ π) All goals completed! 🐙
f:ℕ × ℕ → ℝhf:AbsConvergent fπ:ℕ × ℕ → ℕ × ℕ := fun p => (p.2, p.1)hπ:Function.Bijective _fvar.254300 := Function.Involutive.bijective (congrFun rfl)g:ℕ → ℕ × ℕhg:Bijective ghconv:{ m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges⊢ { m := 0, seq := fun n => if n ≥ 0 then ((f ∘ π) ∘ π ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges
All goals completed! 🐙Теорема 8.2.2, четверта версія
theorem sum_comm {f:ℕ × ℕ → ℝ} (hf:AbsConvergent f) :
(fun n ↦ ((fun m ↦ f (n, m)):Series).sum:Series).sum = (fun m ↦ ((fun n ↦ f (n, m)):Series).sum:Series).sum := f:ℕ × ℕ → ℝhf:AbsConvergent f⊢ { m := 0,
seq := fun n =>
if n ≥ 0 then
(fun n => { m := 0, seq := fun n_1 => if n_1 ≥ 0 then (fun m => f (n, m)) n_1.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.sum =
{ m := 0,
seq := fun n =>
if n ≥ 0 then
(fun m => { m := 0, seq := fun n => if n ≥ 0 then (fun n => f (n, m)) n.toNat else 0, vanish := ⋯ }.sum)
n.toNat
else 0,
vanish := ⋯ }.sum
All goals completed! 🐙Лема 8.2.3 / Вправа 8.2.1
theorem AbsConvergent.iff {X:Type} (hX:CountablyInfinite X) (f : X → ℝ) :
AbsConvergent f ↔ BddAbove ((fun A ↦ ∑ x ∈ A, |f x|) '' .univ ) := X:TypehX:CountablyInfinite Xf:X → ℝ⊢ AbsConvergent f ↔ BddAbove ((fun A => ∑ x ∈ A, |f x|) '' Set.univ)
All goals completed! 🐙abbrev AbsConvergent' {X:Type} (f: X → ℝ) : Prop := BddAbove ((fun A ↦ ∑ x ∈ A, |f x|) '' .univ )theorem AbsConvergent'.of_finite {X:Type} [Finite X] (f:X → ℝ) : AbsConvergent' f := X:Typeinst✝:Finite Xf:X → ℝ⊢ AbsConvergent' f
X:Typeinst✝:Finite Xf:X → ℝx✝:?_mvar.273414 := Fintype.ofFinite _fvar.273409⊢ AbsConvergent' f
X:Typeinst✝:Finite Xf:X → ℝx✝:?_mvar.273414 := Fintype.ofFinite _fvar.273409⊢ ∃ x, ∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ x; X:Typeinst✝:Finite Xf:X → ℝx✝:?_mvar.273414 := Fintype.ofFinite _fvar.273409⊢ ∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ ∑ x, |f x|; X:Typeinst✝:Finite Xf:X → ℝx✝:?_mvar.273414 := Fintype.ofFinite _fvar.273409A:Finset X⊢ ∑ x ∈ A, |f x| ≤ ∑ x, |f x|; X:Typeinst✝:Finite Xf:X → ℝx✝:?_mvar.273414 := Fintype.ofFinite _fvar.273409A:Finset X⊢ ∀ (x : X), 0 ≤ |f x|; All goals completed! 🐙Не в підручнику, але мала б бути включена.
theorem AbsConvergent'.of_countable {X:Type} (hX:CountablyInfinite X) {f:X → ℝ} :
AbsConvergent' f ↔ AbsConvergent f := X:TypehX:CountablyInfinite Xf:X → ℝ⊢ AbsConvergent' f ↔ AbsConvergent f
X:TypehX:CountablyInfinite Xf:X → ℝ⊢ AbsConvergent' f → AbsConvergent fX:TypehX:CountablyInfinite Xf:X → ℝ⊢ AbsConvergent f → AbsConvergent' f
X:TypehX:CountablyInfinite Xf:X → ℝ⊢ AbsConvergent' f → AbsConvergent f X:TypehX:CountablyInfinite Xf:X → ℝhf:AbsConvergent' f⊢ AbsConvergent f; X:TypehX:CountablyInfinite Xf:X → ℝhf:∃ x, ∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ x⊢ AbsConvergent f; X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ L⊢ AbsConvergent f
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective g⊢ AbsConvergent f; X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective g⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.absConverges
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective g⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.converges; X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective g⊢ ∃ M, ∀ (N : ℤ), { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial N ≤ MX:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective g⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.nonneg
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective g⊢ ∃ M, ∀ (N : ℤ), { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial N ≤ M X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective g⊢ ∀ (N : ℤ), { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial N ≤ L; X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℤ⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial N ≤ L; X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℤhN:N ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial N ≤ LX:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℤhN:¬N ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial N ≤ L
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℤhN:N ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial N ≤ L X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℕ⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial ↑N ≤ L
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℕg':ℕ ↪ _fvar.281889 := { toFun := _fvar.287797, inj' := ⋯ }⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial ↑N ≤ L
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℕg':ℕ ↪ _fvar.281889 := { toFun := _fvar.287797, inj' := ⋯ }⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial ↑N =
∑ x ∈ Finset.map g' (Icc 0 N), |f x|
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℕg':ℕ ↪ _fvar.281889 := { toFun := _fvar.287797, inj' := ⋯ }⊢ ∑ x ∈ Icc 0 N, |f (g x)| = ∑ x ∈ Icc 0 N, |f (g' x)|; All goals completed! 🐙
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℤhN:¬N ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then (f ∘ g) n.toNat else 0, vanish := ⋯ }.abs.partial N = ∑ x ∈ ∅, |f x|
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℤhN:¬N ≥ 0⊢ { m := 0, seq := fun n => if 0 ≤ n then f (g n.toNat) else 0, vanish := ⋯ }.abs.partial N = 0; X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gN:ℤhN:¬N ≥ 0⊢ N < { m := 0, seq := fun n => if 0 ≤ n then f (g n.toNat) else 0, vanish := ⋯ }.abs.m; All goals completed! 🐙
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective g⊢ ∀ (n : ℤ), 0 ≤ if 0 ≤ n then |if 0 ≤ n then f (g n.toNat) else 0| else 0
X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gn:ℤ⊢ 0 ≤ if 0 ≤ n then |if 0 ≤ n then f (g n.toNat) else 0| else 0; X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gn:ℤh:n ≥ 0⊢ 0 ≤ if 0 ≤ n then |if 0 ≤ n then f (g n.toNat) else 0| else 0X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gn:ℤh:¬n ≥ 0⊢ 0 ≤ if 0 ≤ n then |if 0 ≤ n then f (g n.toNat) else 0| else 0 X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gn:ℤh:n ≥ 0⊢ 0 ≤ if 0 ≤ n then |if 0 ≤ n then f (g n.toNat) else 0| else 0X:TypehX:CountablyInfinite Xf:X → ℝL:ℝhL:∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ Lg:ℕ → Xhg:Bijective gn:ℤh:¬n ≥ 0⊢ 0 ≤ if 0 ≤ n then |if 0 ≤ n then f (g n.toNat) else 0| else 0 All goals completed! 🐙
X:TypehX:CountablyInfinite Xf:X → ℝhf:AbsConvergent f⊢ AbsConvergent' f; rwa [AbsConvergent.iff hX fX:TypehX:CountablyInfinite Xf:X → ℝhf:BddAbove ((fun A => ∑ x ∈ A, |f x|) '' Set.univ)⊢ AbsConvergent' f at hfЛема 8.2.5 / Вправа 8.2.2
theorem AbsConvergent'.countable_supp {X:Type} {f:X → ℝ} (hf: AbsConvergent' f) :
AtMostCountable { x | f x ≠ 0 } := X:Typef:X → ℝhf:AbsConvergent' f⊢ AtMostCountable ↑{x | f x ≠ 0}
All goals completed! 🐙
Порівняйте із Mathlib-овським Summable.subtype
theorem AbsConvergent'.subtype {X:Type} {f:X → ℝ} (hf: AbsConvergent' f) (A: Set X) :
AbsConvergent' (fun x:A ↦ f x) := X:Typef:X → ℝhf:AbsConvergent' fA:Set X⊢ AbsConvergent' fun x => f ↑x
X:Typef:X → ℝhf:AbsConvergent' fA:Set X⊢ (fun A_1 => ∑ x ∈ A_1, |(fun x => f ↑x) x|) '' Set.univ ⊆ (fun A => ∑ x ∈ A, |f x|) '' Set.univ
X:Typef:X → ℝhf:AbsConvergent' fA:Set Xz:ℝhz:z ∈ (fun A_1 => ∑ x ∈ A_1, |(fun x => f ↑x) x|) '' Set.univ⊢ z ∈ (fun A => ∑ x ∈ A, |f x|) '' Set.univ; X:Typef:X → ℝhf:AbsConvergent' fA:Set Xz:ℝhz:∃ y, ∑ x ∈ y, |f ↑x| = z⊢ ∃ y, ∑ x ∈ y, |f x| = z; X:Typef:X → ℝhf:AbsConvergent' fA✝:Set Xz:ℝA:Finset ↑A✝hA:∑ x ∈ A, |f ↑x| = z⊢ ∃ y, ∑ x ∈ y, |f x| = z
X:Typef:X → ℝhf:AbsConvergent' fA✝:Set Xz:ℝA:Finset ↑A✝hA:∑ x ∈ A, |f ↑x| = z⊢ ∑ x ∈ Finset.map (Embedding.subtype fun x => x ∈ A✝) A, |f x| = z; All goals completed! 🐙
Узагальнена сума. Зверніть увагу, що це дасть некоректні значення, якщо f не є AbsConvergent'.
noncomputable abbrev Sum' {X:Type} (f: X → ℝ) : ℝ := Sum (fun x : { x | f x ≠ 0 } ↦ f x)Не в підручнику, але мала б бути включена (закони рядів значно важче встановити без цього).
theorem Sum'.of_finsupp {X:Type} {f:X → ℝ} {A: Finset X} (h: ∀ x ∉ A, f x = 0) : Sum' f = ∑ x ∈ A, f x := X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0⊢ Sum' f = ∑ x ∈ A, f x
X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0⊢ (Sum fun x => f ↑x) = ∑ x ∈ A, f x
X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0E:Set _fvar.318129 := {x | @_fvar.318130 x ≠ 0}⊢ (Sum fun x => f ↑x) = ∑ x ∈ A, f x
have hE : E ⊆ A := X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0⊢ Sum' f = ∑ x ∈ A, f x X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0E:Set _fvar.318129 := {x | @_fvar.318130 x ≠ 0}a✝:X⊢ a✝ ∈ E → a✝ ∈ ↑A; X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0E:Set _fvar.318129 := {x | @_fvar.318130 x ≠ 0}a✝:X⊢ ¬f a✝ = 0 → a✝ ∈ A; All goals completed! 🐙
X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0E:Set _fvar.318129 := {x | @_fvar.318130 x ≠ 0}hE:_fvar.318187 ⊆ ↑_fvar.318131 := ?_mvar.318381hfin:Finite ↑_fvar.318187 := Finite.Set.subset ?_mvar.321492 _fvar.318382⊢ (Sum fun x => f ↑x) = ∑ x ∈ A, f x
X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0E:Set _fvar.318129 := {x | @_fvar.318130 x ≠ 0}hE:_fvar.318187 ⊆ ↑_fvar.318131 := ?_mvar.318381hfin:Finite ↑_fvar.318187 := Finite.Set.subset ?_mvar.321492 _fvar.318382E':Finset _fvar.318129 := ⋯.toFinset⊢ (Sum fun x => f ↑x) = ∑ x ∈ A, f x
X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0E:Set _fvar.318129 := {x | @_fvar.318130 x ≠ 0}hE:_fvar.318187 ⊆ ↑_fvar.318131 := ?_mvar.318381hfin:Finite ↑_fvar.318187 := Finite.Set.subset ?_mvar.321492 _fvar.318382E':Finset _fvar.318129 := ⋯.toFinset⊢ ∑ a ∈ E', f a = ∑ x ∈ A, f x
replace hE : E' ⊆ A := X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0⊢ Sum' f = ∑ x ∈ A, f x All goals completed! 🐙
X:Typef:X → ℝA:Finset Xh:∀ x ∉ A, f x = 0E:Set _fvar.318129 := {x | @_fvar.318130 x ≠ 0}hfin:Finite ↑_fvar.318187 := Finite.Set.subset ?_mvar.321492 _fvar.318382E':Finset _fvar.318129 := ⋯.toFinsethE:_fvar.321953 ⊆ _fvar.318131 := ?_mvar.323704⊢ ∀ x ∈ A, x ∉ E' → f x = 0; All goals completed! 🐙Не в підручнику, але мала б бути включена (закони рядів значно важче встановити без цього).
theorem Sum'.of_countable_supp {X:Type} {f:X → ℝ} {A: Set X} (hA: CountablyInfinite A)
(hfA : ∀ x ∉ A, f x = 0) (hconv: AbsConvergent' f):
AbsConvergent' (fun x:A ↦ f x) ∧ Sum' f = Sum (fun x:A ↦ f x) := X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' f⊢ (AbsConvergent' fun x => f ↑x) ∧ Sum' f = Sum fun x => f ↑x
-- We can adapt the proof of `AbsConvergent'.of_countable` to establish absolute convergence on A.
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)⊢ (AbsConvergent' fun x => f ↑x) ∧ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)⊢ (AbsConvergent fun x => f ↑x) ∧ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)⊢ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}⊢ Sum' f = Sum fun x => f ↑x
-- Ми можемо адаптувати доведення `AbsConvergent'.of_countable`, щоб встановити абсолютну збіжність на A.
have hE : E ⊆ A := X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' f⊢ (AbsConvergent' fun x => f ↑x) ∧ Sum' f = Sum fun x => f ↑x X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}a✝:X⊢ a✝ ∈ E → a✝ ∈ A; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}a✝:X⊢ ¬f a✝ = 0 → a✝ ∈ A; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}a✝:Xthis:f a✝ ≠ 0 ∧ a✝ ∉ A⊢ False; All goals completed! 🐙
-- Тепер ми відображаємо A назад на натуральні числа, таким чином ідентифікуючи E з підмножиною E' множини ℕ.
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective g⊢ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)⊢ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}⊢ Sum' f = Sum fun x => f ↑x
set ι : E' → E := fun ⟨ n, hn ⟩ ↦ ⟨ g n, X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}x✝:↑E'n:ℕhn:n ∈ E'⊢ ↑(g n) ∈ E All goals completed! 🐙 ⟩
have hι: Bijective ι := X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' f⊢ (AbsConvergent' fun x => f ↑x) ∧ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩⊢ Injective ιX:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩⊢ Surjective ι
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩⊢ Injective ι X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩val✝¹:ℕproperty✝¹:val✝¹ ∈ E'val✝:ℕproperty✝:val✝ ∈ E'h:ι ⟨val✝¹, property✝¹⟩ = ι ⟨val✝, property✝⟩⊢ ⟨val✝¹, property✝¹⟩ = ⟨val✝, property✝⟩; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective gE':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩val✝¹:ℕproperty✝¹:val✝¹ ∈ E'val✝:ℕproperty✝:val✝ ∈ E'hsum:{ m := 0, seq := fun n => if 0 ≤ n then f ↑(g n.toNat) else 0, vanish := ⋯ }.convergesTo (Sum fun x => f ↑x)h:g val✝¹ = g val✝⊢ val✝¹ = val✝; All goals completed! 🐙
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩⊢ Surjective ι X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩x:Xhx:x ∈ E⊢ ∃ a, ι a = ⟨x, hx⟩; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩x:Xhx:x ∈ En:ℕhn:g n = ⟨x, ⋯⟩⊢ ∃ a, ι a = ⟨x, hx⟩; use ⟨ n, X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩x:Xhx:x ∈ En:ℕhn:g n = ⟨x, ⋯⟩⊢ n ∈ E' All goals completed! 🐙 ⟩; All goals completed! 🐙
-- Випадки нескінченного та скінченного E' розглядаються окремо.
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'⊢ Sum' f = Sum fun x => f ↑xX:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'⊢ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'⊢ Sum' f = Sum fun x => f ↑x -- використайте `Nat.monotone_enum_of_infinite`, щоб перелічити E'
-- покажіть, що часткові суми E' є підпослідовністю часткових сум A
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347⊢ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono a⊢ Sum' f = Sum fun x => f ↑x
have : atTop.Tendsto (Nat.cast ∘ Subtype.val ∘ a: ℕ → ℤ) atTop := X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' f⊢ (AbsConvergent' fun x => f ↑x) ∧ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono a⊢ StrictMono (Subtype.val ∘ a)
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono aa✝:ℕb✝:ℕhnm:a✝ < b✝⊢ (Subtype.val ∘ a) a✝ < (Subtype.val ∘ a) b✝; All goals completed! 🐙
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono athis:Filter.Tendsto (Nat.cast ∘ Subtype.val ∘ _fvar.691794) Filter.atTop Filter.atTop := ?_mvar.692125⊢ Tendsto
({ m := 0, seq := fun n => if n ≥ 0 then ((fun x => f ↑x) ∘ g) n.toNat else 0, vanish := ⋯ }.partial ∘
Nat.cast ∘ Subtype.val ∘ a)
atTop (nhds (Sum' f))
have hconv'' : AbsConvergent (fun x:E ↦ f x) := X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' f⊢ (AbsConvergent' fun x => f ↑x) ∧ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono athis:Filter.Tendsto (Nat.cast ∘ Subtype.val ∘ _fvar.691794) Filter.atTop Filter.atTop := ?_mvar.692125⊢ AbsConvergent' fun x => f ↑xX:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono athis:Filter.Tendsto (Nat.cast ∘ Subtype.val ∘ _fvar.691794) Filter.atTop Filter.atTop := ?_mvar.692125⊢ CountablyInfinite ↑E
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono athis:Filter.Tendsto (Nat.cast ∘ Subtype.val ∘ _fvar.691794) Filter.atTop Filter.atTop := ?_mvar.692125⊢ AbsConvergent' fun x => f ↑x All goals completed! 🐙
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono athis:Filter.Tendsto (Nat.cast ∘ Subtype.val ∘ _fvar.691794) Filter.atTop Filter.atTop := ?_mvar.692125⊢ EqualCard ↑E' ↑E; All goals completed! 🐙
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := ?_mvar.693717this:?_mvar.693782 :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)⊢ Tendsto
({ m := 0, seq := fun n => if n ≥ 0 then ((fun x => f ↑x) ∘ g) n.toNat else 0, vanish := ⋯ }.partial ∘
Nat.cast ∘ Subtype.val ∘ a)
atTop (nhds (Sum' f))
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := ?_mvar.693717this:?_mvar.693782 :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)⊢ { m := 0, seq := fun n => if n ≥ 0 then ((fun x => f ↑x) ∘ g) n.toNat else 0, vanish := ⋯ }.partial ∘
Nat.cast ∘ Subtype.val ∘ a =
{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => f ↑x) ∘ ι ∘ a) n.toNat else 0, vanish := ⋯ }.partial ∘ Nat.cast; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := ?_mvar.693717this:?_mvar.693782 :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕ⊢ ({ m := 0, seq := fun n => if n ≥ 0 then ((fun x => f ↑x) ∘ g) n.toNat else 0, vanish := ⋯ }.partial ∘
Nat.cast ∘ Subtype.val ∘ a)
N =
({ m := 0, seq := fun n => if n ≥ 0 then ((fun x => f ↑x) ∘ ι ∘ a) n.toNat else 0, vanish := ⋯ }.partial ∘ Nat.cast) N
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := ?_mvar.693717this:?_mvar.693782 :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕ⊢ ∑ x ∈ Icc 0 ↑(a N), f ↑(g x) = ∑ x ∈ Icc 0 N, f ↑(g ↑(a x))
calc
_ = ∑ x ∈ .image (Subtype.val ∘ a) (.Icc 0 N), f ↑(g x) := X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕ⊢ ∑ x ∈ Icc 0 ↑(a N), f ↑(g x) = ∑ x ∈ image (Subtype.val ∘ a) (Icc 0 N), f ↑(g x)
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕ⊢ ∑ x ∈ image (Subtype.val ∘ a) (Icc 0 N), f ↑(g x) = ∑ x ∈ Icc 0 ↑(a N), f ↑(g x); X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕ⊢ image (Subtype.val ∘ a) (Icc 0 N) ⊆ Icc 0 ↑(a N)X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕ⊢ ∀ x ∈ Icc 0 ↑(a N), x ∉ image (Subtype.val ∘ a) (Icc 0 N) → f ↑(g x) = 0
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕ⊢ image (Subtype.val ∘ a) (Icc 0 N) ⊆ Icc 0 ↑(a N) X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕm:ℕhm:m ∈ image (Subtype.val ∘ a) (Icc 0 N)⊢ m ∈ Icc 0 ↑(a N); X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕm:ℕhm:∃ a_1 ≤ N, ↑(a a_1) = m⊢ m ≤ ↑(a N); X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕn:ℕhn:n ≤ N⊢ ↑(a n) ≤ ↑(a N)
All goals completed! 🐙
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕx:ℕhx:x ∈ Icc 0 ↑(a N)hx':x ∉ image (Subtype.val ∘ a) (Icc 0 N)⊢ f ↑(g x) = 0; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕx:ℕhx:x ≤ ↑(a N)hx':∀ x_1 ≤ N, ¬↑(a x_1) = x⊢ f ↑(g x) = 0; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕx:ℕhx:x ≤ ↑(a N)hx':f ↑(g x) ≠ 0⊢ ∃ x_1 ≤ N, ↑(a x_1) = x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕx:ℕhx:x ≤ ↑(a N)hx':f ↑(g x) ≠ 0n:ℕhn:(ι ∘ a) n = ⟨↑(g x), hx'⟩⊢ ∃ x_1 ≤ N, ↑(a x_1) = x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕx:ℕhx:x ≤ ↑(a N)hx':f ↑(g x) ≠ 0n:ℕhn:g ↑(a n) = g x⊢ ∃ x_1 ≤ N, ↑(a x_1) = x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕx:ℕhx:x ≤ ↑(a N)hx':f ↑(g x) ≠ 0n:ℕhn:↑(a n) = x⊢ ∃ x_1 ≤ N, ↑(a x_1) = x; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕn:ℕhx:↑(a n) ≤ ↑(a N)hx':f ↑(g ↑(a n)) ≠ 0⊢ ∃ x ≤ N, ↑(a x) = ↑(a n)
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕn:ℕhx:↑(a n) ≤ ↑(a N)hx':f ↑(g ↑(a n)) ≠ 0⊢ n ≤ N ∧ ↑(a n) = ↑(a n); All goals completed! 🐙
_ = _ := X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕ⊢ ∑ x ∈ image (Subtype.val ∘ a) (Icc 0 N), f ↑(g x) = ∑ x ∈ Icc 0 N, f ↑(g ↑(a x))
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕ⊢ Set.InjOn (Subtype.val ∘ a) ↑(Icc 0 N)
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕx₁✝:ℕa✝¹:x₁✝ ∈ ↑(Icc 0 N)x₂✝:ℕa✝:x₂✝ ∈ ↑(Icc 0 N)h:(Subtype.val ∘ a) x₁✝ = (Subtype.val ∘ a) x₂✝⊢ x₁✝ = x₂✝; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':CountablyInfinite ↑E'hinf:Infinite ↑_fvar.443024 := Chapter8.CountablyInfinite.toInfinite _fvar.691347a:ℕ → ↑E'ha_bij:Bijective aha_mono:StrictMono ahconv'':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x :=
Eq.mpr
(id
(congrArg (fun _a => _a)
(Eq.symm
(propext
(Chapter8.AbsConvergent'.of_countable
((Chapter8.CountablyInfinite.equiv (Exists.intro _fvar.487100 _fvar.487291)).mp _fvar.691347))))))
(Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337717)this:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.487100 ∘ _fvar.691794) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq (Function.Bijective.comp _fvar.487291 _fvar.691803)
(Chapter8.AbsConvergent.comp (Function.Bijective.comp _fvar.487291 _fvar.691803) _fvar.693718)N:ℕx₁✝:ℕa✝¹:x₁✝ ∈ ↑(Icc 0 N)x₂✝:ℕa✝:x₂✝ ∈ ↑(Icc 0 N)h:a x₁✝ = a x₂✝⊢ x₁✝ = x₂✝; All goals completed! 🐙
-- Коли E' скінченне, ми показуємо, що всі достатньо великі часткові суми A рівні сумі E'.
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352⊢ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832⊢ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166⊢ Sum' f = Sum fun x => f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166⊢ { m := 0, seq := fun n => if n ≥ 0 then ((fun x => f ↑x) ∘ g) n.toNat else 0, vanish := ⋯ }.convergesTo (Sum' f)
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166⊢ Tendsto { m := 0, seq := fun n => if 0 ≤ n then f ↑(g n.toNat) else 0, vanish := ⋯ }.partial atTop (nhds (∑ x, f ↑x))
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166⊢ ∀ᶠ (x' : ℤ) in atTop,
{ m := 0, seq := fun n => if 0 ≤ n then f ↑(g n.toNat) else 0, vanish := ⋯ }.partial x' = ∑ x, f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166hE'bound:BddAbove _fvar.443024 := Set.Finite.bddAbove _fvar.691352⊢ ∀ᶠ (x' : ℤ) in atTop,
{ m := 0, seq := fun n => if 0 ≤ n then f ↑(g n.toNat) else 0, vanish := ⋯ }.partial x' = ∑ x, f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166hE'bound:∃ x, ∀ y ∈ E', y ≤ x⊢ ∀ᶠ (x' : ℤ) in atTop,
{ m := 0, seq := fun n => if 0 ≤ n then f ↑(g n.toNat) else 0, vanish := ⋯ }.partial x' = ∑ x, f ↑x; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166N:ℕhN:∀ y ∈ E', y ≤ N⊢ ∀ᶠ (x' : ℤ) in atTop,
{ m := 0, seq := fun n => if 0 ≤ n then f ↑(g n.toNat) else 0, vanish := ⋯ }.partial x' = ∑ x, f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166N:ℕhN:∀ y ∈ E', y ≤ N⊢ ∃ a, ∀ b ≥ a, { m := 0, seq := fun n => if 0 ≤ n then f ↑(g n.toNat) else 0, vanish := ⋯ }.partial b = ∑ x, f ↑x
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166N:ℕhN:∀ y ∈ E', y ≤ N⊢ ∀ b ≥ ↑N, { m := 0, seq := fun n => if 0 ≤ n then f ↑(g n.toNat) else 0, vanish := ⋯ }.partial b = ∑ x, f ↑x; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166N:ℕhN:∀ y ∈ E', y ≤ NN':ℤhN':N' ≥ ↑N⊢ { m := 0, seq := fun n => if 0 ≤ n then f ↑(g n.toNat) else 0, vanish := ⋯ }.partial N' = ∑ x, f ↑x
lift N' to ℕ using (LE.le.trans (X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℤhN':N' ≥ ↑N⊢ 0 ≤ ↑N All goals completed! 🐙) hN')
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 := ?_mvar.337839g:ℕ → ↑Ahg:Bijective ghsum:?_mvar.442867 := Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := ?_mvar.487290hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ?_mvar.726832hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ?_mvar.727166N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'⊢ ∑ x ∈ Icc 0 N', f ↑(g x) = ∑ x, f ↑x
calc
_ = ∑ n ∈ E', f (g n) := X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'⊢ ∑ x ∈ Icc 0 N', f ↑(g x) = ∑ n ∈ E'.toFinset, f ↑(g n)
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'⊢ ∑ n ∈ E'.toFinset, f ↑(g n) = ∑ x ∈ Icc 0 N', f ↑(g x); X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'⊢ E'.toFinset ⊆ Icc 0 N'X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'⊢ ∀ x ∈ Icc 0 N', x ∉ E'.toFinset → f ↑(g x) = 0
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'⊢ E'.toFinset ⊆ Icc 0 N' X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'x:ℕhx:x ∈ E'.toFinset⊢ x ∈ Icc 0 N'; X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective gE':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'x:ℕhsum:{ m := 0, seq := fun n => if 0 ≤ n then f ↑(g n.toNat) else 0, vanish := ⋯ }.convergesTo (Sum fun x => f ↑x)hx:x ∈ E'⊢ x ≤ N'; All goals completed! 🐙
X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'x✝:ℕa✝:x✝ ∈ Icc 0 N'hx':x✝ ∉ E'.toFinset⊢ f ↑(g x✝) = 0; All goals completed! 🐙
_ = ∑ n:E', f (g n) := X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'⊢ ∑ n ∈ E'.toFinset, f ↑(g n) = ∑ n, f ↑(g ↑n) All goals completed! 🐙
_ = ∑ n, f (ι n) := sum_congr rfl (X:Typef:X → ℝA:Set XhA:CountablyInfinite ↑AhfA:∀ x ∉ A, f x = 0hconv:AbsConvergent' fhconv':Chapter8.AbsConvergent fun x => @_fvar.337503 ↑x := (Chapter8.AbsConvergent'.of_countable _fvar.337505).mp (Chapter8.AbsConvergent'.subtype _fvar.337507 _fvar.337504)E:Set _fvar.337502 := {x | @_fvar.337503 x ≠ 0}hE:_fvar.337717 ⊆ _fvar.337504 :=
fun ⦃a⦄ =>
@id (a ∈ _fvar.337717 → a ∈ _fvar.337504)
(Classical.byContradiction (¬@_fvar.337503 a = 0 → a ∈ _fvar.337504) fun this =>
Exists.casesOn _fvar.337505 fun w h =>
Exists.casesOn _fvar.337635 fun w_1 h_1 =>
And.casesOn
(id (Eq.mp (Mathlib.Tactic.PushNeg.not_implies_eq (¬@_fvar.337503 a = 0) (a ∈ _fvar.337504)) this))
fun left right =>
And.casesOn h_1 fun left_1 right_1 =>
Exists.casesOn right_1 fun w_2 h_1 =>
False.elim
(Eq.mp
(Eq.trans
(congrArg Not
(Eq.trans
(congrArg (fun x => x = 0)
((@fun x a => @_fvar.337506 x a) a
(of_eq_true (Eq.trans (congrArg Not (eq_false right)) not_false_eq_true))))
(eq_self 0)))
not_true_eq_false)
left))g:ℕ → ↑Ahg:Bijective ghsum:{ m := 0, seq := fun n => if n ≥ 0 then ((fun x => @_fvar.337503 ↑x) ∘ _fvar.442859) n.toNat else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum fun x => @_fvar.337503 ↑x) :=
Chapter8.Sum.eq _fvar.442863 (Chapter8.AbsConvergent.comp _fvar.442863 _fvar.337635)E':Set ℕ := {n | ↑(@_fvar.442859 n) ∈ _fvar.337717}ι:↑_fvar.443024 → ↑_fvar.337717 :=
fun x =>
match x with
| ⟨n, hn⟩ => ⟨↑(@_fvar.442859 n), ⋯⟩hι:Function.Bijective _fvar.487100 := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)hE':Finite ↑E'hEfin:Finite ↑_fvar.337717 := (Function.Bijective.finite_iff _fvar.487291).mp _fvar.691352hE'fintype:Fintype ↑_fvar.443024 := Fintype.ofFinite ↑_fvar.443024hEfintype:Fintype ↑_fvar.337717 := Fintype.ofFinite ↑_fvar.337717N:ℕhN:∀ y ∈ E', y ≤ NN':ℕhN':N ≤ N'⊢ ∀ x ∈ univ, f ↑(g ↑x) = f ↑(ι x) All goals completed! 🐙)
_ = _ := hι.sum_comp (g := fun x ↦ f x)
Зв'язок з властивістю Summable Mathlib. Можлива якась версія доказу може бути підходящою
для Mathlib?
theorem AbsConvergent'.iff_Summable {X:Type} (f:X → ℝ) : AbsConvergent' f ↔ Summable f := X:Typef:X → ℝ⊢ AbsConvergent' f ↔ Summable f
X:Typef:X → ℝ⊢ BddAbove (Set.range fun A => ∑ x ∈ A, |f x|) ↔ Summable fun x => |(|f x|)|
X:Typef:X → ℝ⊢ BddAbove (Set.range fun A => ∑ x ∈ A, |f x|) ↔
∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < ε
classical
X:Typef:X → ℝ⊢ BddAbove (Set.range fun A => ∑ x ∈ A, |f x|) →
∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < εX:Typef:X → ℝ⊢ (∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < ε) →
BddAbove (Set.range fun A => ∑ x ∈ A, |f x|)
X:Typef:X → ℝ⊢ BddAbove (Set.range fun A => ∑ x ∈ A, |f x|) →
∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < ε X:Typef:X → ℝh:BddAbove (Set.range fun A => ∑ x ∈ A, |f x|)ε:ℝhε:0 < ε⊢ ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < ε
X:Typef:X → ℝε:ℝhε:0 < εs:Set ℝ := Set.range fun A => ∑ x ∈ A, |@_fvar.815323 x|h:BddAbove s⊢ ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < ε
have hnon : s.Nonempty := X:Typef:X → ℝ⊢ AbsConvergent' f ↔ Summable f X:Typef:X → ℝε:ℝhε:0 < εs:Set ℝ := Set.range fun A => ∑ x ∈ A, |@_fvar.815323 x|h:BddAbove s⊢ (Set.range fun A => ∑ x ∈ A, |f x|).Nonempty; X:Typef:X → ℝε:ℝhε:0 < εs:Set ℝ := Set.range fun A => ∑ x ∈ A, |@_fvar.815323 x|h:BddAbove s⊢ (fun A => ∑ x ∈ A, |f x|) ∅ = 0; All goals completed! 🐙
have : (sSup s)-ε < sSup s := X:Typef:X → ℝ⊢ AbsConvergent' f ↔ Summable f All goals completed! 🐙
X:Typef:X → ℝε:ℝhε:0 < εs:Set ℝ := Set.range fun A => ∑ x ∈ A, |@_fvar.815323 x|h:BddAbove shnon:Set.Nonempty _fvar.829463 := ?_mvar.829560this:∃ a, sSup (Set.range fun A => ∑ x ∈ A, |f x|) - ε < ∑ x ∈ a, |f x|⊢ ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < ε; X:Typef:X → ℝε:ℝhε:0 < εs:Set ℝ := Set.range fun A => ∑ x ∈ A, |@_fvar.815323 x|h:BddAbove shnon:Set.Nonempty _fvar.829463 := ?_mvar.829560S:Finset XhS:sSup (Set.range fun A => ∑ x ∈ A, |f x|) - ε < ∑ x ∈ S, |f x|⊢ ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < ε
X:Typef:X → ℝε:ℝhε:0 < εs:Set ℝ := Set.range fun A => ∑ x ∈ A, |@_fvar.815323 x|h:BddAbove shnon:Set.Nonempty _fvar.829463 := ?_mvar.829560S:Finset XhS:sSup (Set.range fun A => ∑ x ∈ A, |f x|) - ε < ∑ x ∈ S, |f x|⊢ ∀ (t : Finset X), Disjoint t S → |∑ x ∈ t, |f x|| < ε; X:Typef:X → ℝε:ℝhε:0 < εs:Set ℝ := Set.range fun A => ∑ x ∈ A, |@_fvar.815323 x|h:BddAbove shnon:Set.Nonempty _fvar.829463 := ?_mvar.829560S:Finset XhS:sSup (Set.range fun A => ∑ x ∈ A, |f x|) - ε < ∑ x ∈ S, |f x|T:Finset XhT:Disjoint T S⊢ |∑ x ∈ T, |f x|| < ε
X:Typef:X → ℝε:ℝhε:0 < εs:Set ℝ := Set.range fun A => ∑ x ∈ A, |@_fvar.815323 x|h:BddAbove shnon:Set.Nonempty _fvar.829463 := ?_mvar.829560S:Finset XhS:sSup (Set.range fun A => ∑ x ∈ A, |f x|) - ε < ∑ x ∈ S, |f x|T:Finset XhT:Disjoint T S⊢ ∑ x ∈ T, |f x| < ε
have : ∑ x ∈ T, |f x| + ∑ x ∈ S, |f x| ≤ sSup s := X:Typef:X → ℝ⊢ AbsConvergent' f ↔ Summable f
X:Typef:X → ℝε:ℝhε:0 < εs:Set ℝ := Set.range fun A => ∑ x ∈ A, |@_fvar.815323 x|h:BddAbove shnon:Set.Nonempty _fvar.829463 := ?_mvar.829560S:Finset XhS:sSup (Set.range fun A => ∑ x ∈ A, |f x|) - ε < ∑ x ∈ S, |f x|T:Finset XhT:Disjoint T S⊢ ∑ x ∈ T, |f x| + ∑ x ∈ S, |f x| ∈ s
X:Typef:X → ℝε:ℝhε:0 < εs:Set ℝ := Set.range fun A => ∑ x ∈ A, |@_fvar.815323 x|h:BddAbove shnon:Set.Nonempty _fvar.829463 := ?_mvar.829560S:Finset XhS:sSup (Set.range fun A => ∑ x ∈ A, |f x|) - ε < ∑ x ∈ S, |f x|T:Finset XhT:Disjoint T S⊢ ∃ y, ∑ x ∈ y, |f x| = ∑ x ∈ T, |f x| + ∑ x ∈ S, |f x|; All goals completed! 🐙
All goals completed! 🐙
X:Typef:X → ℝh:∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < ε⊢ BddAbove (Set.range fun A => ∑ x ∈ A, |f x|); choose S hS using h 1 (X:Typef:X → ℝh:∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < ε⊢ 0 < 1 All goals completed! 🐙)
X:Typef:X → ℝh:∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < εS:Finset XhS:∀ (t : Finset X), Disjoint t S → |∑ x ∈ t, |f x|| < 1⊢ ∃ x, ∀ y ∈ Set.range fun A => ∑ x ∈ A, |f x|, y ≤ x
X:Typef:X → ℝh:∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < εS:Finset XhS:∀ (t : Finset X), Disjoint t S → |∑ x ∈ t, |f x|| < 1⊢ ∀ y ∈ Set.range fun A => ∑ x ∈ A, |f x|, y ≤ ∑ x ∈ S, |f x| + 1; X:Typef:X → ℝh:∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < εS:Finset XhS:∀ (t : Finset X), Disjoint t S → |∑ x ∈ t, |f x|| < 1⊢ ∀ (a : Finset X), ∑ x ∈ a, |f x| ≤ ∑ x ∈ S, |f x| + 1; X:Typef:X → ℝh:∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < εS:Finset XhS:∀ (t : Finset X), Disjoint t S → |∑ x ∈ t, |f x|| < 1T:Finset X⊢ ∑ x ∈ T, |f x| ≤ ∑ x ∈ S, |f x| + 1
calc
_ = ∑ x ∈ (T ∩ S), |f x| + ∑ x ∈ (T \ S), |f x| := (sum_inter_add_sum_diff _ _ _).symm
_ ≤ _ := X:Typef:X → ℝh:∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < εS:Finset XhS:∀ (t : Finset X), Disjoint t S → |∑ x ∈ t, |f x|| < 1T:Finset X⊢ ∑ x ∈ T ∩ S, |f x| + ∑ x ∈ T \ S, |f x| ≤ ∑ x ∈ S, |f x| + 1
X:Typef:X → ℝh:∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < εS:Finset XhS:∀ (t : Finset X), Disjoint t S → |∑ x ∈ t, |f x|| < 1T:Finset X⊢ T ∩ S ⊆ SX:Typef:X → ℝh:∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < εS:Finset XhS:∀ (t : Finset X), Disjoint t S → |∑ x ∈ t, |f x|| < 1T:Finset X⊢ ∑ x ∈ T \ S, |f x| ≤ 1
X:Typef:X → ℝh:∀ (ε : ℝ), 0 < ε → ∃ s, ∀ (t : Finset X), Disjoint t s → |∑ x ∈ t, |f x|| < εS:Finset XhS:∀ (t : Finset X), Disjoint t S → |∑ x ∈ t, |f x|| < 1T:Finset X⊢ T ∩ S ⊆ S All goals completed! 🐙
All goals completed! 🐙Можливо, підходить для перенесення в Mathlib?
theorem Filter.Eventually.int_natCast_atTop (p: ℤ → Prop) :
(∀ᶠ n in .atTop, p n) ↔ ∀ᶠ n:ℕ in .atTop, p ↑n := p:ℤ → Prop⊢ (∀ᶠ (n : ℤ) in atTop, p n) ↔ ∀ᶠ (n : ℕ) in atTop, p ↑n
p:ℤ → Prop⊢ (∀ᶠ (n : ℕ) in atTop, p ↑n) → ∀ᶠ (n : ℤ) in atTop, p n
p:ℤ → Prop⊢ ∀ (x : ℕ), (∀ (b : ℕ), x ≤ b → p ↑b) → ∃ a, ∀ (b : ℤ), a ≤ b → p b
p:ℤ → PropN:ℕhN:∀ (b : ℕ), N ≤ b → p ↑b⊢ ∃ a, ∀ (b : ℤ), a ≤ b → p b; p:ℤ → PropN:ℕhN:∀ (b : ℕ), N ≤ b → p ↑b⊢ ∀ (b : ℤ), ↑N ≤ b → p b; p:ℤ → PropN:ℕhN:∀ (b : ℕ), N ≤ b → p ↑bn:ℤhn:↑N ≤ n⊢ p n
lift n to ℕ using (p:ℤ → PropN:ℕhN:∀ (b : ℕ), N ≤ b → p ↑bn:ℤhn:↑N ≤ n⊢ 0 ≤ n All goals completed! 🐙)
p:ℤ → PropN:ℕhN:∀ (b : ℕ), N ≤ b → p ↑bn:ℕhn:N ≤ n⊢ p ↑n; All goals completed! 🐙theorem Filter.Tendsto.int_natCast_atTop {R:Type} (f: ℤ → R) (l: Filter R) :
atTop.Tendsto f l ↔ atTop.Tendsto (f ∘ Nat.cast) l := R:Typef:ℤ → Rl:Filter R⊢ Tendsto f atTop l ↔ Tendsto (f ∘ Nat.cast) atTop l
R:Typef:ℤ → Rl:Filter R⊢ (∀ ⦃p : R → Prop⦄, (∀ᶠ (y : R) in l, p y) → ∃ a, ∀ (b : ℤ), a ≤ b → p (f b)) ↔
∀ ⦃p : R → Prop⦄, (∀ᶠ (y : R) in l, p y) → ∃ a, ∀ (b : ℕ), a ≤ b → p (f ↑b)
R:Typef:ℤ → Rl:Filter Rp:R → Proph:∀ᶠ (y : R) in l, p y⊢ (∃ a, ∀ (b : ℤ), a ≤ b → p (f b)) ↔ ∃ a, ∀ (b : ℕ), a ≤ b → p (f ↑b)
R:Typef:ℤ → Rl:Filter Rp:R → Proph:∀ᶠ (y : R) in l, p y⊢ (∀ᶠ (x : ℤ) in atTop, p (f x)) ↔ ∀ᶠ (x : ℕ) in atTop, p (f ↑x)
All goals completed! 🐙
Зв'язок з операцією tsum (або ) Mathlib.
theorem Sum'.eq_tsum {X:Type} (f:X → ℝ) (h: AbsConvergent' f) :
Sum' f = ∑' x, f x := X:Typef:X → ℝh:AbsConvergent' f⊢ Sum' f = ∑' (x : X), f x
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}⊢ Sum' f = ∑' (x : X), f x
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}⊢ Sum' f = ∑' (x : X), f xX:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:Finite ↑{x | f x ≠ 0}⊢ Sum' f = ∑' (x : X), f x
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}⊢ Sum' f = ∑' (x : X), f x X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}⊢ (Sum fun x => f ↑x) = ∑' (x : X), f x
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective g⊢ (Sum fun x => f ↑x) = ∑' (x : X), f x
have : ((f ∘ Subtype.val) ∘ g:Series).absConverges := X:Typef:X → ℝh:AbsConvergent' f⊢ Sum' f = ∑' (x : X), f x
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective g⊢ AbsConvergent (f ∘ Subtype.val)
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective g⊢ AbsConvergent' (f ∘ Subtype.val)
All goals completed! 🐙
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:?_mvar.912776 := Chapter8.Sum.eq _fvar.901542 _fvar.901675⊢ (Sum fun x => f ↑x) = ∑' (x : X), f x
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:?_mvar.912776 := Chapter8.Sum.eq _fvar.901542 _fvar.901675⊢ { m := 0, seq := fun n => if n ≥ 0 then ((f ∘ Subtype.val) ∘ g) n.toNat else 0, vanish := ⋯ }.convergesTo
(∑' (x : X), f x)
replace : ∑' x, f x = ∑' n, f (g n) := calc
_ = ∑' x:E, f x := X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:{ m := 0,
seq := fun n =>
if n ≥ 0 then
((_fvar.898928 ∘ @Subtype.val _fvar.898927 fun x => x ∈ {x | @_fvar.898928 x ≠ 0}) ∘ _fvar.901538) n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum (_fvar.898928 ∘ @Subtype.val _fvar.898927 fun x => x ∈ {x | @_fvar.898928 x ≠ 0})) :=
Chapter8.Sum.eq _fvar.901542 _fvar.901675⊢ ∑' (x : X), f x = ∑' (x : ↑E), f ↑x
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:{ m := 0,
seq := fun n =>
if n ≥ 0 then
((_fvar.898928 ∘ @Subtype.val _fvar.898927 fun x => x ∈ {x | @_fvar.898928 x ≠ 0}) ∘ _fvar.901538) n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum (_fvar.898928 ∘ @Subtype.val _fvar.898927 fun x => x ∈ {x | @_fvar.898928 x ≠ 0})) :=
Chapter8.Sum.eq _fvar.901542 _fvar.901675⊢ ∑' (x : ↑Set.univ), f ↑x = ∑' (x : ↑E), f ↑x
have hcompl : E = .univ \ {x | f x = 0 } := X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:{ m := 0,
seq := fun n =>
if n ≥ 0 then
((_fvar.898928 ∘ @Subtype.val _fvar.898927 fun x => x ∈ {x | @_fvar.898928 x ≠ 0}) ∘ _fvar.901538) n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum (_fvar.898928 ∘ @Subtype.val _fvar.898927 fun x => x ∈ {x | @_fvar.898928 x ≠ 0})) :=
Chapter8.Sum.eq _fvar.901542 _fvar.901675⊢ ∑' (x : X), f x = ∑' (x : ↑E), f ↑x All goals completed! 🐙
convert (tsum_setElem_eq_tsum_setElem_diff _ {x | f x = 0} (X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:{ m := 0,
seq := fun n =>
if n ≥ 0 then
((_fvar.898928 ∘ @Subtype.val _fvar.898927 fun x => x ∈ {x | @_fvar.898928 x ≠ 0}) ∘ _fvar.901538) n.toNat
else 0,
vanish := ⋯ }.convergesTo
(Chapter8.Sum (_fvar.898928 ∘ @Subtype.val _fvar.898927 fun x => x ∈ {x | @_fvar.898928 x ≠ 0})) :=
Chapter8.Sum.eq _fvar.901542 _fvar.901675hcompl:_fvar.898983 = Set.univ \ {x | @_fvar.898928 x = 0} :=
id
(Exists.casesOn (id _fvar.899083) fun w h_1 =>
Set.ext fun x =>
of_eq_true
(Eq.trans
(congrArg (Iff ¬@_fvar.898928 x = 0)
(Eq.trans (Set.mem_diff._simp_1 x)
(Eq.trans (congrArg (fun x_1 => x_1 ∧ ¬@_fvar.898928 x = 0) (Set.mem_univ._simp_1 x))
(true_and ¬@_fvar.898928 x = 0))))
(iff_self ¬@_fvar.898928 x = 0)))⊢ ∀ b ∈ {x | f x = 0}, ?m.438 b = 0 All goals completed! 🐙))
_ = _ := (Equiv.tsum_eq (Equiv.ofBijective _ hg) _).symm
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:∑' (x : _fvar.898927), @_fvar.898928 x = ∑' (n : ℕ), @_fvar.898928 ↑(@_fvar.901538 n) := Trans.trans ?_mvar.916719 ⋯⊢ { m := 0, seq := fun n => if n ≥ 0 then ((f ∘ Subtype.val) ∘ g) n.toNat else 0, vanish := ⋯ }.convergesTo
(∑' (n : ℕ), f ↑(g n))
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:∑' (x : _fvar.898927), @_fvar.898928 x = ∑' (n : ℕ), @_fvar.898928 ↑(@_fvar.901538 n) := Trans.trans ?_mvar.916719 ⋯⊢ Tendsto { m := 0, seq := fun n => if n ≥ 0 then ((f ∘ Subtype.val) ∘ g) n.toNat else 0, vanish := ⋯ }.partial atTop
(nhds (∑' (n : ℕ), f ↑(g n))); X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:∑' (x : _fvar.898927), @_fvar.898928 x = ∑' (n : ℕ), @_fvar.898928 ↑(@_fvar.901538 n) := Trans.trans ?_mvar.916719 ⋯⊢ Tendsto
({ m := 0, seq := fun n => if n ≥ 0 then ((f ∘ Subtype.val) ∘ g) n.toNat else 0, vanish := ⋯ }.partial ∘ Nat.cast)
atTop (nhds (∑' (n : ℕ), f ↑(g n)))
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:∑' (x : _fvar.898927), @_fvar.898928 x = ∑' (n : ℕ), @_fvar.898928 ↑(@_fvar.901538 n) := Trans.trans ?_mvar.916719 ⋯⊢ { m := 0, seq := fun n => if n ≥ 0 then ((f ∘ Subtype.val) ∘ g) n.toNat else 0, vanish := ⋯ }.partial ∘ Nat.cast =
(fun n => ∑ i ∈ range n, f ↑(g i)) ∘ fun a => a + 1X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:∑' (x : _fvar.898927), @_fvar.898928 x = ∑' (n : ℕ), @_fvar.898928 ↑(@_fvar.901538 n) := Trans.trans ?_mvar.916719 ⋯⊢ Summable fun n => f ↑(g n)
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:∑' (x : _fvar.898927), @_fvar.898928 x = ∑' (n : ℕ), @_fvar.898928 ↑(@_fvar.901538 n) := Trans.trans ?_mvar.916719 ⋯⊢ { m := 0, seq := fun n => if n ≥ 0 then ((f ∘ Subtype.val) ∘ g) n.toNat else 0, vanish := ⋯ }.partial ∘ Nat.cast =
(fun n => ∑ i ∈ range n, f ↑(g i)) ∘ fun a => a + 1 X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:∑' (x : _fvar.898927), @_fvar.898928 x = ∑' (n : ℕ), @_fvar.898928 ↑(@_fvar.901538 n) := Trans.trans ?_mvar.916719 ⋯N:ℕ⊢ ({ m := 0, seq := fun n => if n ≥ 0 then ((f ∘ Subtype.val) ∘ g) n.toNat else 0, vanish := ⋯ }.partial ∘ Nat.cast) N =
((fun n => ∑ i ∈ range n, f ↑(g i)) ∘ fun a => a + 1) N; All goals completed! 🐙
X:Typef:X → ℝh:Summable fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:CountablyInfinite ↑{x | f x ≠ 0}g:ℕ → ↑{x | f x ≠ 0}hg:Bijective gthis:∑' (x : X), f x = ∑' (n : ℕ), f ↑(g n)⊢ Summable fun n => f ↑(g n)
All goals completed! 🐙
X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:Finite ↑{x | f x ≠ 0}⊢ ∑ x ∈ ⋯.toFinset, f x = ∑' (x : X), f xX:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:Finite ↑{x | f x ≠ 0}⊢ ∀ x ∉ ⋯.toFinset, f x = 0; X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:Finite ↑{x | f x ≠ 0}⊢ ∑' (x : X), f x = ∑ x ∈ ⋯.toFinset, f xX:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:Finite ↑{x | f x ≠ 0}⊢ ∀ x ∉ ⋯.toFinset, f x = 0; X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:Finite ↑{x | f x ≠ 0}⊢ ∀ b ∉ ⋯.toFinset, f b = 0X:Typef:X → ℝh:AbsConvergent' fE:Set _fvar.898927 := {x | @_fvar.898928 x ≠ 0}hE:Finite ↑{x | f x ≠ 0}⊢ ∀ x ∉ ⋯.toFinset, f x = 0
all_goals All goals completed! 🐙Твердження 8.2.6 (a) (Закони для абсолютно збіжних рядів) / Вправа 8.2.3
theorem Sum'.add {X:Type} {f g:X → ℝ} (hf: AbsConvergent' f) (hg: AbsConvergent' g) :
AbsConvergent' (f+g) ∧ Sum' (f + g) = Sum' f + Sum' g := X:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ AbsConvergent' (f + g) ∧ Sum' (f + g) = Sum' f + Sum' g
All goals completed! 🐙Твердження 8.2.6 (b) (Закони для абсолютно збіжних рядів) / Вправа 8.2.3
theorem Sum'.smul {X:Type} {f:X → ℝ} (hf: AbsConvergent' f) (c: ℝ) :
AbsConvergent' (c • f) ∧ Sum' (c • f) = c * Sum' f := X:Typef:X → ℝhf:AbsConvergent' fc:ℝ⊢ AbsConvergent' (c • f) ∧ Sum' (c • f) = c * Sum' f
All goals completed! 🐙Цей закон не вказаний явно в Твердженні 8.2.6, але легко випливає з частин (a) та (b).
theorem Sum'.sub {X:Type} {f g:X → ℝ} (hf: AbsConvergent' f) (hg: AbsConvergent' g) :
AbsConvergent' (f-g) ∧ Sum' (f - g) = Sum' f - Sum' g := X:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ AbsConvergent' (f - g) ∧ Sum' (f - g) = Sum' f - Sum' g
X:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ f - g = f + -1 • gX:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ Sum' (f - g) = Sum' (f + -1 • g)X:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ Sum' f - Sum' g = Sum' f + Sum' (-1 • g)
X:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ f - g = f + -1 • g X:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ f - g = f + -g; All goals completed! 🐙
X:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ Sum' (f - g) = Sum' (f + -1 • g) X:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ f - g = f + -1 • g; X:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ f - g = f + -g; All goals completed! 🐙
X:Typef:X → ℝg:X → ℝhf:AbsConvergent' fhg:AbsConvergent' g⊢ Sum' f - Sum' g = Sum' f + -1 * Sum' g; All goals completed! 🐙
Твердження 8.2.6 (c) (Закони для абсолютно збіжних рядів) / Вправа 8.2.3. Перша частина
цього твердження була переміщена до AbsConvergent'.subtype.
theorem Sum'.of_disjoint_union {X:Type} {f:X → ℝ} (hf: AbsConvergent' f) {X₁ X₂ : Set X} (hdisj: Disjoint X₁ X₂):
Sum' (fun x: (X₁ ∪ X₂: Set X) ↦ f x) = Sum' (fun x : X₁ ↦ f x) + Sum' (fun x : X₂ ↦ f x) := X:Typef:X → ℝhf:AbsConvergent' fX₁:Set XX₂:Set Xhdisj:Disjoint X₁ X₂⊢ (Sum' fun x => f ↑x) = (Sum' fun x => f ↑x) + Sum' fun x => f ↑x
All goals completed! 🐙
Це технічне твердження, аналог tsum_univ, необхідне через те, як Mathlib обробляє множини.
theorem Sum'.of_univ {X:Type} {f:X → ℝ} (hf: AbsConvergent' f) :
Sum' (fun x: (.univ : Set X) ↦ f x) = Sum' f := X:Typef:X → ℝhf:AbsConvergent' f⊢ (Sum' fun x => f ↑x) = Sum' f
All goals completed! 🐙theorem Sum'.of_comp {X Y:Type} {f:X → ℝ} (hf: AbsConvergent' f) {φ: Y → X}
(hφ: Function.Bijective φ) :
AbsConvergent' (f ∘ φ) ∧ Sum' f = Sum' (f ∘ φ) := X:TypeY:Typef:X → ℝhf:AbsConvergent' fφ:Y → Xhφ:Bijective φ⊢ AbsConvergent' (f ∘ φ) ∧ Sum' f = Sum' (f ∘ φ)
All goals completed! 🐙Лема 8.2.7 / Вправа 8.2.4
theorem divergent_parts_of_divergent {a: ℕ → ℝ} (ha: (a:Series).converges)
(ha': ¬ (a:Series).absConverges) :
¬ AbsConvergent (fun n : {n | a n ≥ 0} ↦ a n) ∧ ¬ AbsConvergent (fun n : {n | a n < 0} ↦ a n)
:= a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConverges⊢ (¬AbsConvergent fun n => a ↑n) ∧ ¬AbsConvergent fun n => a ↑n
All goals completed! 🐙Теорема 8.2.8 (Теорема Рімана про перестановку) / Вправа 8.2.5
theorem permute_convergesTo_of_divergent {a: ℕ → ℝ} (ha: (a:Series).converges)
(ha': ¬ (a:Series).absConverges) (L:ℝ) :
∃ f : ℕ → ℕ, Bijective f ∧ (a ∘ f:Series).convergesTo L
:= a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
-- Доведення написане так, щоб відповідати структурі оригінального тексту.
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝh1:¬AbsConvergent fun n => a ↑nh2:¬AbsConvergent fun n => a ↑n⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝh2:¬AbsConvergent fun n => a ↑nA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑n⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑n⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
have hdisj : Disjoint A_plus A_minus := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑n⊢ A_plus ∩ A_minus = ∅; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nx✝:ℕ⊢ x✝ ∈ A_plus ∩ A_minus ↔ x✝ ∈ ∅; All goals completed! 🐙
have hunion : A_plus ∪ A_minus = .univ := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 := ?_mvar.1026800x✝:ℕ⊢ x✝ ∈ A_plus ∪ A_minus ↔ x✝ ∈ Set.univ; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 := ?_mvar.1026800x✝:ℕ⊢ 0 ≤ a x✝ ∨ a x✝ < 0; All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 := ?_mvar.1026800hunion:_fvar.1026204 ∪ _fvar.1026357 = ?_mvar.1031781 := ?_mvar.1031786hA_plus_inf:Infinite ↑_fvar.1026204 := sorry⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 := ?_mvar.1026800hunion:_fvar.1026204 ∪ _fvar.1026357 = ?_mvar.1031781 := ?_mvar.1031786hA_plus_inf:Infinite ↑_fvar.1026204 := sorryhA_minus_inf:Infinite ↑_fvar.1026357 := sorry⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 := ?_mvar.1026800hunion:_fvar.1026204 ∪ _fvar.1026357 = ?_mvar.1031781 := ?_mvar.1031786hA_plus_inf:Infinite ↑_fvar.1026204 := sorryhA_minus_inf:Infinite ↑_fvar.1026357 := sorrya_plus:ℕ → ↑A_plusha_plus_bij:Bijective a_plusha_plus_mono:StrictMono a_plus⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 := ?_mvar.1026800hunion:_fvar.1026204 ∪ _fvar.1026357 = ?_mvar.1031781 := ?_mvar.1031786hA_plus_inf:Infinite ↑_fvar.1026204 := sorryhA_minus_inf:Infinite ↑_fvar.1026357 := sorrya_plus:ℕ → ↑A_plusha_plus_bij:Bijective a_plusha_plus_mono:StrictMono a_plusa_minus:ℕ → ↑A_minusha_minus_bij:Bijective a_minusha_minus_mono:StrictMono a_minus⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
let F : (n : ℕ) → ((m : ℕ) → m < n → ℕ) → ℕ :=
fun j n' ↦ if ∑ i:Fin j, n' i (a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 :=
Eq.mpr (id (congrArg (fun _a => _a) (propext Set.disjoint_iff_inter_eq_empty)))
(Set.ext fun x =>
of_eq_true
(Eq.trans
(Eq.trans
(congr
(congrArg Iff
(Eq.trans
(congrArg (fun x_1 => x ∈ setOf x_1 ∩ {n | @_fvar.1026119 n < 0}) (funext fun n => ge_iff_le._simp_1))
(Set.mem_inter_iff._simp_1 x {n | 0 ≤ @_fvar.1026119 n} {n | @_fvar.1026119 n < 0})))
(Set.mem_empty_iff_false._simp_1 x))
(iff_false (0 ≤ @_fvar.1026119 x ∧ @_fvar.1026119 x < 0)))
(Eq.trans not_and._simp_1
(Eq.trans (implies_congr (Eq.refl (0 ≤ @_fvar.1026119 x)) not_lt._simp_1) imp_self._simp_1))))hunion:_fvar.1026204 ∪ _fvar.1026357 = Set.univ :=
Set.ext fun x =>
Eq.mpr
(id
(Eq.trans
(congr
(congrArg Iff
(Eq.trans
(congrArg (fun x_1 => x ∈ setOf x_1 ∪ {n | @_fvar.1026119 n < 0}) (funext fun n => ge_iff_le._simp_1))
(Set.mem_union._simp_1 x {n | 0 ≤ @_fvar.1026119 n} {n | @_fvar.1026119 n < 0})))
(Set.mem_univ._simp_1 x))
(iff_true (0 ≤ @_fvar.1026119 x ∨ @_fvar.1026119 x < 0))))
(Chapter8.permute_convergesTo_of_divergent._proof_1 _fvar.1026120 _fvar.1026121 _fvar.1026122 _fvar.1026274
_fvar.1026428 _fvar.1026801 x)hA_plus_inf:Infinite ↑_fvar.1026204 := sorryhA_minus_inf:Infinite ↑_fvar.1026357 := sorrya_plus:ℕ → ↑A_plusha_plus_bij:Bijective a_plusha_plus_mono:StrictMono a_plusa_minus:ℕ → ↑A_minusha_minus_bij:Bijective a_minusha_minus_mono:StrictMono a_minusj:ℕn':(m : ℕ) → m < j → ℕi:Fin j⊢ ↑i < j All goals completed! 🐙) > L then
Nat.min { n ∈ A_plus | ∀ i:Fin j, n ≠ n' i (a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 :=
Eq.mpr (id (congrArg (fun _a => _a) (propext Set.disjoint_iff_inter_eq_empty)))
(Set.ext fun x =>
of_eq_true
(Eq.trans
(Eq.trans
(congr
(congrArg Iff
(Eq.trans
(congrArg (fun x_1 => x ∈ setOf x_1 ∩ {n | @_fvar.1026119 n < 0}) (funext fun n => ge_iff_le._simp_1))
(Set.mem_inter_iff._simp_1 x {n | 0 ≤ @_fvar.1026119 n} {n | @_fvar.1026119 n < 0})))
(Set.mem_empty_iff_false._simp_1 x))
(iff_false (0 ≤ @_fvar.1026119 x ∧ @_fvar.1026119 x < 0)))
(Eq.trans not_and._simp_1
(Eq.trans (implies_congr (Eq.refl (0 ≤ @_fvar.1026119 x)) not_lt._simp_1) imp_self._simp_1))))hunion:_fvar.1026204 ∪ _fvar.1026357 = Set.univ :=
Set.ext fun x =>
Eq.mpr
(id
(Eq.trans
(congr
(congrArg Iff
(Eq.trans
(congrArg (fun x_1 => x ∈ setOf x_1 ∪ {n | @_fvar.1026119 n < 0}) (funext fun n => ge_iff_le._simp_1))
(Set.mem_union._simp_1 x {n | 0 ≤ @_fvar.1026119 n} {n | @_fvar.1026119 n < 0})))
(Set.mem_univ._simp_1 x))
(iff_true (0 ≤ @_fvar.1026119 x ∨ @_fvar.1026119 x < 0))))
(Chapter8.permute_convergesTo_of_divergent._proof_1 _fvar.1026120 _fvar.1026121 _fvar.1026122 _fvar.1026274
_fvar.1026428 _fvar.1026801 x)hA_plus_inf:Infinite ↑_fvar.1026204 := sorryhA_minus_inf:Infinite ↑_fvar.1026357 := sorrya_plus:ℕ → ↑A_plusha_plus_bij:Bijective a_plusha_plus_mono:StrictMono a_plusa_minus:ℕ → ↑A_minusha_minus_bij:Bijective a_minusha_minus_mono:StrictMono a_minusj:ℕn':(m : ℕ) → m < j → ℕn:ℕi:Fin j⊢ ↑i < j All goals completed! 🐙) }
else
Nat.min { n ∈ A_minus | ∀ i:Fin j, n ≠ n' i (a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 :=
Eq.mpr (id (congrArg (fun _a => _a) (propext Set.disjoint_iff_inter_eq_empty)))
(Set.ext fun x =>
of_eq_true
(Eq.trans
(Eq.trans
(congr
(congrArg Iff
(Eq.trans
(congrArg (fun x_1 => x ∈ setOf x_1 ∩ {n | @_fvar.1026119 n < 0}) (funext fun n => ge_iff_le._simp_1))
(Set.mem_inter_iff._simp_1 x {n | 0 ≤ @_fvar.1026119 n} {n | @_fvar.1026119 n < 0})))
(Set.mem_empty_iff_false._simp_1 x))
(iff_false (0 ≤ @_fvar.1026119 x ∧ @_fvar.1026119 x < 0)))
(Eq.trans not_and._simp_1
(Eq.trans (implies_congr (Eq.refl (0 ≤ @_fvar.1026119 x)) not_lt._simp_1) imp_self._simp_1))))hunion:_fvar.1026204 ∪ _fvar.1026357 = Set.univ :=
Set.ext fun x =>
Eq.mpr
(id
(Eq.trans
(congr
(congrArg Iff
(Eq.trans
(congrArg (fun x_1 => x ∈ setOf x_1 ∪ {n | @_fvar.1026119 n < 0}) (funext fun n => ge_iff_le._simp_1))
(Set.mem_union._simp_1 x {n | 0 ≤ @_fvar.1026119 n} {n | @_fvar.1026119 n < 0})))
(Set.mem_univ._simp_1 x))
(iff_true (0 ≤ @_fvar.1026119 x ∨ @_fvar.1026119 x < 0))))
(Chapter8.permute_convergesTo_of_divergent._proof_1 _fvar.1026120 _fvar.1026121 _fvar.1026122 _fvar.1026274
_fvar.1026428 _fvar.1026801 x)hA_plus_inf:Infinite ↑_fvar.1026204 := sorryhA_minus_inf:Infinite ↑_fvar.1026357 := sorrya_plus:ℕ → ↑A_plusha_plus_bij:Bijective a_plusha_plus_mono:StrictMono a_plusa_minus:ℕ → ↑A_minusha_minus_bij:Bijective a_minusha_minus_mono:StrictMono a_minusj:ℕn':(m : ℕ) → m < j → ℕn:ℕi:Fin j⊢ ↑i < j All goals completed! 🐙) }
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 := ?_mvar.1026800hunion:_fvar.1026204 ∪ _fvar.1026357 = ?_mvar.1031781 := ?_mvar.1031786hA_plus_inf:Infinite ↑_fvar.1026204 := sorryhA_minus_inf:Infinite ↑_fvar.1026357 := sorrya_plus:ℕ → ↑A_plusha_plus_bij:Bijective a_plusha_plus_mono:StrictMono a_plusa_minus:ℕ → ↑A_minusha_minus_bij:Bijective a_minusha_minus_mono:StrictMono a_minusF:(n : ℕ) → ((m : ℕ) → m < n → ℕ) → ℕ :=
fun j n' =>
if ↑(∑ i, n' (↑i) (@?_mvar.1043774 j n' i)) > _fvar.1026122 then
Chapter8.Nat.min {n | n ∈ _fvar.1026204 ∧ ∀ (i : Fin j), n ≠ n' (↑i) (@?_mvar.1043775 j n' n i)}
else Chapter8.Nat.min {n | n ∈ _fvar.1026357 ∧ ∀ (i : Fin j), n ≠ n' (↑i) (@?_mvar.1043776 j n' n i)}n':ℕ → ℕ := fun t => Nat.strongRec ?_mvar.1044271 t⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 := ?_mvar.1026800hunion:_fvar.1026204 ∪ _fvar.1026357 = ?_mvar.1031781 := ?_mvar.1031786hA_plus_inf:Infinite ↑_fvar.1026204 := sorryhA_minus_inf:Infinite ↑_fvar.1026357 := sorrya_plus:ℕ → ↑A_plusha_plus_bij:Bijective a_plusha_plus_mono:StrictMono a_plusa_minus:ℕ → ↑A_minusha_minus_bij:Bijective a_minusha_minus_mono:StrictMono a_minusF:(n : ℕ) → ((m : ℕ) → m < n → ℕ) → ℕ :=
fun j n' =>
if ↑(∑ i, n' (↑i) (@?_mvar.1043774 j n' i)) > _fvar.1026122 then
Chapter8.Nat.min {n | n ∈ _fvar.1026204 ∧ ∀ (i : Fin j), n ≠ n' (↑i) (@?_mvar.1043775 j n' n i)}
else Chapter8.Nat.min {n | n ∈ _fvar.1026357 ∧ ∀ (i : Fin j), n ≠ n' (↑i) (@?_mvar.1043776 j n' n i)}n':ℕ → ℕ := fun t => Nat.strongRec ?_mvar.1044271 thn':∀ (j : ℕ),
@_fvar.1044277 j =
if ↑(∑ i, @_fvar.1044277 ↑i) > _fvar.1026122 then
Chapter8.Nat.min {n | n ∈ _fvar.1026204 ∧ ∀ (i : Fin j), n ≠ @_fvar.1044277 ↑i}
else Chapter8.Nat.min {n | n ∈ _fvar.1026357 ∧ ∀ (i : Fin j), n ≠ @_fvar.1044277 ↑i} :=
fun j => Nat.strongRec.eq_def _fvar.1043783 j⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L
have hn'_plus_inf (j:ℕ) : Infinite { n ∈ A_plus | ∀ i:Fin j, n ≠ n' i } := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L All goals completed! 🐙
have hn'_minus_inf (j:ℕ) : Infinite { n ∈ A_minus | ∀ i:Fin j, n ≠ n' i } := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L All goals completed! 🐙
have hn'_inj : Injective n' := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L All goals completed! 🐙
have h_case_I : Infinite { j | ∑ i:Fin j, n' i > L } := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L All goals completed! 🐙
have h_case_II : Infinite { j | ∑ i:Fin j, n' i ≤ L } := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L All goals completed! 🐙
have hn'_surj : Surjective n' := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L All goals completed! 🐙
have hconv : atTop.Tendsto (a ∘ n') (nhds 0) := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L All goals completed! 🐙
have hsum : (a ∘ n':Series).convergesTo L := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝ⊢ ∃ f, Bijective f ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.convergesTo L All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 := ?_mvar.1026800hunion:_fvar.1026204 ∪ _fvar.1026357 = ?_mvar.1031781 := ?_mvar.1031786hA_plus_inf:Infinite ↑_fvar.1026204 := sorryhA_minus_inf:Infinite ↑_fvar.1026357 := sorrya_plus:ℕ → ↑A_plusha_plus_bij:Bijective a_plusha_plus_mono:StrictMono a_plusa_minus:ℕ → ↑A_minusha_minus_bij:Bijective a_minusha_minus_mono:StrictMono a_minusF:(n : ℕ) → ((m : ℕ) → m < n → ℕ) → ℕ :=
fun j n' =>
if ↑(∑ i, n' (↑i) (@?_mvar.1043774 j n' i)) > _fvar.1026122 then
Chapter8.Nat.min {n | n ∈ _fvar.1026204 ∧ ∀ (i : Fin j), n ≠ n' (↑i) (@?_mvar.1043775 j n' n i)}
else Chapter8.Nat.min {n | n ∈ _fvar.1026357 ∧ ∀ (i : Fin j), n ≠ n' (↑i) (@?_mvar.1043776 j n' n i)}n':ℕ → ℕ := fun t => Nat.strongRec ?_mvar.1044271 thn':∀ (j : ℕ),
@_fvar.1044277 j =
if ↑(∑ i, @_fvar.1044277 ↑i) > _fvar.1026122 then
Chapter8.Nat.min {n | n ∈ _fvar.1026204 ∧ ∀ (i : Fin j), n ≠ @_fvar.1044277 ↑i}
else Chapter8.Nat.min {n | n ∈ _fvar.1026357 ∧ ∀ (i : Fin j), n ≠ @_fvar.1044277 ↑i} :=
fun j => Nat.strongRec.eq_def _fvar.1043783 jhn'_plus_inf:∀ (j : ℕ), Infinite ↑{n | n ∈ _fvar.1026204 ∧ ∀ (i : Fin j), n ≠ @_fvar.1044277 ↑i} := fun j => @?_mvar.1046513 jhn'_minus_inf:∀ (j : ℕ), Infinite ↑{n | n ∈ _fvar.1026357 ∧ ∀ (i : Fin j), n ≠ @_fvar.1044277 ↑i} := fun j => @?_mvar.1046904 jhn'_inj:Function.Injective _fvar.1044277 := ?_mvar.1046918h_case_I:Infinite ↑{j | ↑(∑ i, @_fvar.1044277 ↑i) > _fvar.1026122} := ?_mvar.1048400h_case_II:Infinite ↑{j | ↑(∑ i, @_fvar.1044277 ↑i) ≤ _fvar.1026122} := ?_mvar.1049879hn'_surj:Function.Surjective _fvar.1044277 := ?_mvar.1049893hconv:Filter.Tendsto (_fvar.1026119 ∘ _fvar.1044277) Filter.atTop (nhds 0) := ?_mvar.1050114hsum:{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.1026119 ∘ _fvar.1044277) n.toNat else 0, vanish := ⋯ }.convergesTo
_fvar.1026122 :=
?_mvar.1050209⊢ Bijective n' ∧ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ n') n.toNat else 0, vanish := ⋯ }.convergesTo L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesL:ℝA_plus:Set ℕ := {n | @_fvar.1026119 n ≥ 0}h1:¬AbsConvergent fun n => a ↑nA_minus:Set ℕ := {n | @_fvar.1026119 n < 0}h2:¬AbsConvergent fun n => a ↑nhdisj:Disjoint _fvar.1026204 _fvar.1026357 := ?_mvar.1026800hunion:_fvar.1026204 ∪ _fvar.1026357 = ?_mvar.1031781 := ?_mvar.1031786hA_plus_inf:Infinite ↑_fvar.1026204 := sorryhA_minus_inf:Infinite ↑_fvar.1026357 := sorrya_plus:ℕ → ↑A_plusha_plus_bij:Bijective a_plusha_plus_mono:StrictMono a_plusa_minus:ℕ → ↑A_minusha_minus_bij:Bijective a_minusha_minus_mono:StrictMono a_minusF:(n : ℕ) → ((m : ℕ) → m < n → ℕ) → ℕ :=
fun j n' =>
if ↑(∑ i, n' (↑i) (@?_mvar.1043774 j n' i)) > _fvar.1026122 then
Chapter8.Nat.min {n | n ∈ _fvar.1026204 ∧ ∀ (i : Fin j), n ≠ n' (↑i) (@?_mvar.1043775 j n' n i)}
else Chapter8.Nat.min {n | n ∈ _fvar.1026357 ∧ ∀ (i : Fin j), n ≠ n' (↑i) (@?_mvar.1043776 j n' n i)}n':ℕ → ℕ := fun t => Nat.strongRec ?_mvar.1044271 thn':∀ (j : ℕ),
@_fvar.1044277 j =
if ↑(∑ i, @_fvar.1044277 ↑i) > _fvar.1026122 then
Chapter8.Nat.min {n | n ∈ _fvar.1026204 ∧ ∀ (i : Fin j), n ≠ @_fvar.1044277 ↑i}
else Chapter8.Nat.min {n | n ∈ _fvar.1026357 ∧ ∀ (i : Fin j), n ≠ @_fvar.1044277 ↑i} :=
fun j => Nat.strongRec.eq_def _fvar.1043783 jhn'_plus_inf:∀ (j : ℕ), Infinite ↑{n | n ∈ _fvar.1026204 ∧ ∀ (i : Fin j), n ≠ @_fvar.1044277 ↑i} := fun j => @?_mvar.1046513 jhn'_minus_inf:∀ (j : ℕ), Infinite ↑{n | n ∈ _fvar.1026357 ∧ ∀ (i : Fin j), n ≠ @_fvar.1044277 ↑i} := fun j => @?_mvar.1046904 jhn'_inj:Function.Injective _fvar.1044277 := ?_mvar.1046918h_case_I:Infinite ↑{j | ↑(∑ i, @_fvar.1044277 ↑i) > _fvar.1026122} := ?_mvar.1048400h_case_II:Infinite ↑{j | ↑(∑ i, @_fvar.1044277 ↑i) ≤ _fvar.1026122} := ?_mvar.1049879hn'_surj:Function.Surjective _fvar.1044277 := ?_mvar.1049893hconv:Filter.Tendsto (_fvar.1026119 ∘ _fvar.1044277) Filter.atTop (nhds 0) := ?_mvar.1050114hsum:{ m := 0, seq := fun n => if n ≥ 0 then (_fvar.1026119 ∘ _fvar.1044277) n.toNat else 0, vanish := ⋯ }.convergesTo
_fvar.1026122 :=
?_mvar.1050209⊢ { m := 0, seq := fun n => if n ≥ 0 then (a ∘ n') n.toNat else 0, vanish := ⋯ }.convergesTo L; All goals completed! 🐙Вправа 8.2.6
theorem permute_diverges_of_divergent {a: ℕ → ℝ} (ha: (a:Series).converges)
(ha': ¬ (a:Series).absConverges) :
∃ f : ℕ → ℕ, Bijective f ∧ atTop.Tendsto (fun N ↦ ((a ∘ f:Series).partial N : EReal)) (nhds ⊤) := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConverges⊢ ∃ f,
Bijective f ∧
Tendsto (fun N => ↑({ m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.partial N)) atTop
(nhds ⊤)
All goals completed! 🐙theorem permute_diverges_of_divergent' {a: ℕ → ℝ} (ha: (a:Series).converges)
(ha': ¬ (a:Series).absConverges) :
∃ f : ℕ → ℕ, Bijective f ∧ atTop.Tendsto (fun N ↦ ((a ∘ f:Series).partial N : EReal)) (nhds ⊥) := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesha':¬{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConverges⊢ ∃ f,
Bijective f ∧
Tendsto (fun N => ↑({ m := 0, seq := fun n => if n ≥ 0 then (a ∘ f) n.toNat else 0, vanish := ⋯ }.partial N)) atTop
(nhds ⊥)
All goals completed! 🐙end Chapter8