Analysis I, Section 8.2: Summation on infinite sets
I have attempted to make the translation as faithful a paraphrasing as possible of the original text. When there is a choice between a more idiomatic Lean solution and a more faithful translation, I have generally chosen the latter. In particular, there will be places where the Lean code could be "golfed" to be more elegant and idiomatic, but I have consciously avoided doing so.
Main constructions and results of this section:
-
Absolute convergence and summation on countably infinite or general sets.
-
The Riemann rearrangement theorem.
Some non-trivial API is provided beyond what is given in the textbook in order connect these notions with existing summation notions.
After this section, the summation notation developed here will be deprecated in favor of Mathlib's API for Summable and tsum.
namespace Chapter8open Chapter7 Chapter7.Series Finset Function Filter
Definition 8.2.1 (Series on countable sets). Note that with this definition, functions defined
on finite sets will not be absolutely convergent; one should use AbsConvergent' instead for such
cases.
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
/-- The definition has been chosen to give a sensible value when `X` is finite, even though
`AbsConvergent` is by definition false in this context. -/
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! 🐙Theorem 8.2.2, preliminary version. The arguments here are rearranged slightly from the text.
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! 🐙Theorem 8.2.2, second version
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 := ⋯ } -- encountered surprising difficulty with definitional equivalence here
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! 🐙Theorem 8.2.2, third version
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! 🐙Theorem 8.2.2, fourth version
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! 🐙Lemma 8.2.3 / Exercise 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! 🐙Not in textbook, but should have been included.
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 hfLemma 8.2.5 / Exercise 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! 🐙
Compare with Mathlib's 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! 🐙
A generalized sum. Note that this will give junk values if f is not AbsConvergent'.
noncomputable abbrev Sum' {X:Type} (f: X → ℝ) : ℝ := Sum (fun x : { x | f x ≠ 0 } ↦ f x)Not in textbook, but should have been included (the series laws are significantly harder to establish without this)
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! 🐙Not in textbook, but should have been included (the series laws are significantly harder to establish without this)
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
-- The main challenge here is to relate a sum on E with a sum on A. First, we show containment.
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! 🐙
-- Now, we map A back to the natural numbers, thus identifying E with a subset E' of ℕ.
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! 🐙
-- The cases of infinite and finite E' are handled separately.
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 -- use Nat.monotone_enum_of_infinite to enumerate E'
-- show the partial sums of E' are a subsequence of the partial sums of 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! 🐙
-- When E' is finite, we show that all sufficiently large partial sums of A are equal to
-- the sum of 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)
Connection with Mathlib's Summable property. Some version of this might be suitable
for 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! 🐙Maybe suitable for porting to 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! 🐙
Connection with Mathlib's tsum (or ) operation
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! 🐙Proposition 8.2.6 (a) (Absolutely convergent series laws) / Exercise 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! 🐙Proposition 8.2.6 (b) (Absolutely convergent series laws) / Exercise 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! 🐙This law is not explicitly stated in Proposition 8.2.6, but follows easily from parts (a) and (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! 🐙
Proposition 8.2.6 (c) (Absolutely convergent series laws) / Exercise 8.2.3. The first
part of this proposition has been moved to 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! 🐙
This technical claim, the analogue of tsum_univ, is required due to the way Mathlib handles
sets.
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! 🐙Lemma 8.2.7 / Exercise 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! 🐙Theorem 8.2.8 (Riemann rearrangement theorem) / Exercise 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
-- This proof is written to follow the structure of the original text.
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.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! 🐙Exercise 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