Analysis I, Section 7.4: Rearrangement of series
I have attempted to make the translation as faithful a paraphrasing as possible of the original text. When there is a choice between a more idiomatic Lean solution and a more faithful translation, I have generally chosen the latter. In particular, there will be places where the Lean code could be "golfed" to be more elegant and idiomatic, but I have consciously avoided doing so.
Main constructions and results of this section:
-
Rearrangement of non-negative or absolutely convergent series.
namespace Chapter7theorem Series.sum_eq_sum (b:ℕ → ℝ) {N:ℤ} (hN: N ≥ 0) : ∑ n ∈ .Icc 0 N, (if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ .Iic N.toNat, b n := b:ℕ → ℝN:ℤhN:N ≥ 0⊢ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n
convert Finset.sum_image (g := Int.ofNat) (b:ℕ → ℝN:ℤhN:N ≥ 0⊢ Set.InjOn Int.ofNat ↑?m.42 All goals completed! 🐙)
b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ x ∈ Finset.Icc 0 N ↔ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat); b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N ↔ ∃ a ≤ N.toNat, ↑a = x; b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N → ∃ a ≤ N.toNat, ↑a = xb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ (∃ a ≤ N.toNat, ↑a = x) → 0 ≤ x ∧ x ≤ N
b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N → ∃ a ≤ N.toNat, ↑a = x b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤleft✝:0 ≤ xright✝:x ≤ N⊢ ∃ a ≤ N.toNat, ↑a = x; b:ℕ → ℝN:ℤhN:N ≥ 0x:ℤleft✝:0 ≤ xright✝:x ≤ N⊢ x.toNat ≤ N.toNat ∧ ↑x.toNat = x; All goals completed! 🐙
All goals completed! 🐙Proposition 7.4.1
theorem Series.converges_of_permute_nonneg {a:ℕ → ℝ} (ha: (a:Series).nonneg) (hconv: (a:Series).converges)
{f: ℕ → ℕ} (hf: Function.Bijective f) :
(fun n ↦ a (f n) : Series).converges ∧ (a:Series).sum = (fun n ↦ a (f n) : Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
-- This proof is written to follow the structure of the original text.
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum
have haf : (af:Series).nonneg := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)n:ℤ⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq n ≥ 0; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)n:ℤh:n ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq n ≥ 0a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)n:ℤh:¬n ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq n ≥ 0 a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)n:ℤh:n ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq n ≥ 0a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)n:ℤh:¬n ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq n ≥ 0 All goals completed! 🐙
a:ℕ → ℝhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)n:ℤh:n ≥ 0ha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑(f n.toNat) ≥ 0⊢ 0 ≤ a (f n.toNat); All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partial⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partial⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.suma:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604⊢ (∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum have Ssum : L = (a:Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum = L; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesTo L; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ Filter.Tendsto { m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial Filter.atTop
(nhds (iSup S))
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ (Set.range S).Nonemptya:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ BddAbove (Set.range S)
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ (Set.range S).Nonempty a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'⊢ S 0 ∈ Set.range S; All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Q:ℝhQ:∀ (N : ℤ), S N ≤ Q⊢ BddAbove (Set.range S); a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Q:ℝhQ:∀ (N : ℤ), S N ≤ Q⊢ Q ∈ upperBounds (Set.range S); All goals completed! 🐙
have Tsum : L' = (af:Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:_fvar.20577 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.20912⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum = L'; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:_fvar.20577 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.20912⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:_fvar.20577 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.20912⊢ Filter.Tendsto { m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial Filter.atTop
(nhds (iSup T))
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:_fvar.20577 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.20912⊢ (Set.range T).Nonemptya:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:_fvar.20577 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.20912⊢ BddAbove (Set.range T)
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:_fvar.20577 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.20912⊢ (Set.range T).Nonempty a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:_fvar.20577 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.20912⊢ T 0 ∈ Set.range T; All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:_fvar.20577 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.20912Q:ℝhQ:∀ (M : ℤ), T M ≤ Q⊢ BddAbove (Set.range T); a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:_fvar.20577 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.20912Q:ℝhQ:∀ (M : ℤ), T M ≤ Q⊢ Q ∈ upperBounds (Set.range T); All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604this:(∃ Q, ∀ (M : ℤ), T M ≤ Q) ∧ L = L'Ssum:_fvar.20577 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.20912Tsum:_fvar.20708 = { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.sum := ?_mvar.122064⊢ ∃ M, ∀ (N : ℤ), { m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial N ≤ M
All goals completed! 🐙
have hTL (M:ℤ) : T M ≤ L := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0⊢ T M ≤ La:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:¬M ≥ 0⊢ T M ≤ L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:¬M ≥ 0⊢ T M ≤ La:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0⊢ T M ≤ L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:¬M ≥ 0⊢ T M ≤ L have hM' : M < 0 := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:¬M ≥ 0hM':_fvar.247761 < 0 := ?_mvar.247887⊢ 0 ≤ L
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:¬M ≥ 0hM':_fvar.247761 < 0 := ?_mvar.247887⊢ BddAbove (Set.range S)
All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)⊢ T M ≤ L
have hN : ∃ N, ∀ m ∈ Y, f m ≤ N := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)⊢ ∀ m ∈ Y, f m ≤ (Finset.image f Y).sup id; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)m:ℕhm:m ∈ Y⊢ f m ≤ (Finset.image f Y).sup id
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)m:ℕhm:m ∈ Y⊢ f m ∈ Finset.image f Y; All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ T M ≤ L
calc
_ = ∑ m ∈ Y, af m := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ T M = ∑ m ∈ Y, af m a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ (∑ n ∈ Finset.Icc 0 M, if 0 ≤ n then a (f n.toNat) else 0) = ∑ n ∈ Y, a (f n); All goals completed! 🐙
_ = ∑ n ∈ f '' Y, a n := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∑ m ∈ Y, af m = ∑ n ∈ (f '' ↑Y).toFinset, a n a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∑ n ∈ (f '' ↑Y).toFinset, a n = ∑ m ∈ Y, af m; convert Finset.sum_image (a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ Set.InjOn ?m.631 ↑?m.630 All goals completed! 🐙); All goals completed! 🐙
_ ≤ ∑ n ∈ .Iic N, a n := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∑ n ∈ (f '' ↑Y).toFinset, a n ≤ ∑ n ∈ Finset.Iic N, a n
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ (f '' ↑Y).toFinset ⊆ Finset.Iic Na:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∀ i ∈ Finset.Iic N, i ∉ (f '' ↑Y).toFinset → 0 ≤ a i
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ (f '' ↑Y).toFinset ⊆ Finset.Iic N a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ Na✝¹:ℕa✝:a✝¹ ∈ (f '' ↑Y).toFinset⊢ a✝¹ ∈ Finset.Iic N; All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ Ni:ℕa✝¹:i ∈ Finset.Iic Na✝:i ∉ (f '' ↑Y).toFinset⊢ 0 ≤ a i; a:ℕ → ℝhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ Ni:ℕa✝¹:i ∈ Finset.Iic Na✝:i ∉ (f '' ↑Y).toFinsetha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑i ≥ 0⊢ 0 ≤ a i; All goals completed! 🐙
_ = S N := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∑ n ∈ Finset.Iic N, a n = S ↑N a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ∑ n ∈ Finset.Iic N, a n = ∑ n ∈ Finset.Icc 0 ↑N, if 0 ≤ n then a n.toNat else 0; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ (∑ n ∈ Finset.Icc 0 ↑N, if 0 ≤ n then a n.toNat else 0) = ∑ n ∈ Finset.Iic N, a n; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ ↑N ≥ 0; All goals completed! 🐙
_ ≤ L := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ S ↑N ≤ L a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604M:ℤhM:M ≥ 0Y:Finset ℕ := Finset.Iic (Int.toNat _fvar.247761)N:ℕhN:∀ m ∈ Y, f m ≤ N⊢ BddAbove (Set.range S); All goals completed! 🐙
have hTbound : ∃ Q, ∀ M, T M ≤ Q := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508⊢ L = L'
have hSL' (N:ℤ) : S N ≤ L' := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:N ≥ 0⊢ S N ≤ L'a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:¬N ≥ 0⊢ S N ≤ L'
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:¬N ≥ 0⊢ S N ≤ L'a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:N ≥ 0⊢ S N ≤ L'
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:¬N ≥ 0⊢ S N ≤ L' have hN' : N < 0 := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:¬N ≥ 0hN':_fvar.469256 < 0 := ?_mvar.469382⊢ 0 ≤ L'
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:¬N ≥ 0hN':_fvar.469256 < 0 := ?_mvar.469382⊢ BddAbove (Set.range T)
All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)⊢ S N ≤ L'
have hM : ∃ M, ∀ n ∈ X, ∃ m, f m = n ∧ m ≤ M := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)⊢ ∀ n ∈ X, ∃ m, f m = n ∧ m ≤ (X.preimage f ⋯).sup id
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)n:ℕhn:n ∈ X⊢ ∃ m, f m = n ∧ m ≤ (X.preimage f ⋯).sup id; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)n:ℕhn:n ∈ Xm:ℕhm:f m = n⊢ ∃ m, f m = n ∧ m ≤ (X.preimage f ⋯).sup id
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)n:ℕhn:n ∈ Xm:ℕhm:f m = n⊢ m ≤ (X.preimage f ⋯).sup id
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)n:ℕhn:n ∈ Xm:ℕhm:f m = n⊢ m ∈ X.preimage f ⋯
All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ M⊢ S N ≤ L'
have sum_eq_sum (b:ℕ → ℝ) {N:ℤ} (hN: N ≥ 0)
: ∑ n ∈ .Icc 0 N, (if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ .Iic N.toNat, b n := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.converges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
convert Finset.sum_image (g := Int.ofNat) (a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N✝:ℤhN✝:N✝ ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0⊢ Set.InjOn Int.ofNat ↑?m.1144 All goals completed! 🐙)
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N✝:ℤhN✝:N✝ ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ x ∈ Finset.Icc 0 N ↔ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat); a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N✝:ℤhN✝:N✝ ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N ↔ ∃ a ≤ N.toNat, ↑a = x; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N✝:ℤhN✝:N✝ ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N → ∃ a ≤ N.toNat, ↑a = xa:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N✝:ℤhN✝:N✝ ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ (∃ a ≤ N.toNat, ↑a = x) → 0 ≤ x ∧ x ≤ N
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N✝:ℤhN✝:N✝ ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤ⊢ 0 ≤ x ∧ x ≤ N → ∃ a ≤ N.toNat, ↑a = x a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N✝:ℤhN✝:N✝ ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤleft✝:0 ≤ xright✝:x ≤ N⊢ ∃ a ≤ N.toNat, ↑a = x; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg := ?_mvar.14799S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 := fun M => @?_mvar.247769 MhTbound:failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation) := ?_mvar.468508N✝:ℤhN✝:N✝ ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Mb:ℕ → ℝN:ℤhN:N ≥ 0x:ℤleft✝:0 ≤ xright✝:x ≤ N⊢ x.toNat ≤ N.toNat ∧ ↑x.toNat = x; All goals completed! 🐙
All goals completed! 🐙
calc
_ = ∑ n ∈ X, a n := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ S N = ∑ n ∈ X, a n All goals completed! 🐙
_ = ∑ n ∈ ((Finset.Iic M).filter (f ·∈ X)).image f, a n := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ ∑ n ∈ X, a n = ∑ n ∈ Finset.image f ({x ∈ Finset.Iic M | f x ∈ X}), a n
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ X = Finset.image f ({x ∈ Finset.Iic M | f x ∈ X}); a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))a✝:ℕ⊢ a✝ ∈ X ↔ a✝ ∈ Finset.image f ({x ∈ Finset.Iic M | f x ∈ X}); a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))a✝:ℕ⊢ a✝ ∈ X ↔ ∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = a✝; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))a✝:ℕ⊢ a✝ ∈ X → ∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = a✝a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))a✝:ℕ⊢ (∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = a✝) → a✝ ∈ X
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))a✝:ℕ⊢ a✝ ∈ X → ∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = a✝ a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))a✝:ℕh:a✝ ∈ X⊢ ∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = a✝; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))m:ℕhm':m ≤ Mh:f m ∈ X⊢ ∃ a, (a ≤ M ∧ f a ∈ X) ∧ f a = f m; All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))w✝:ℕleft✝:w✝ ≤ Mright✝:f w✝ ∈ X⊢ f w✝ ∈ X; All goals completed! 🐙
_ ≤ ∑ m ∈ .Iic M, af m := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ ∑ n ∈ Finset.image f ({x ∈ Finset.Iic M | f x ∈ X}), a n ≤ ∑ m ∈ Finset.Iic M, af m
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ ∑ x ∈ Finset.Iic M with f x ∈ X, a (f x) ≤ ∑ m ∈ Finset.Iic M, af m
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ {x ∈ Finset.Iic M | f x ∈ X} ⊆ Finset.Iic Ma:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ ∀ i ∈ Finset.Iic M, i ∉ {x ∈ Finset.Iic M | f x ∈ X} → 0 ≤ a (f i)
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ {x ∈ Finset.Iic M | f x ∈ X} ⊆ Finset.Iic M All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))i:ℕa✝¹:i ∈ Finset.Iic Ma✝:i ∉ {x ∈ Finset.Iic M | f x ∈ X}⊢ 0 ≤ a (f i); a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))i:ℕa✝¹:i ∈ Finset.Iic Ma✝:i ∉ {x ∈ Finset.Iic M | f x ∈ X}haf:{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.seq ↑i ≥ 0⊢ 0 ≤ a (f i); All goals completed! 🐙
_ = T M := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ ∑ m ∈ Finset.Iic M, af m = T ↑M a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ ∑ n ∈ Finset.Iic M, a (f n) = ∑ n ∈ Finset.Icc 0 ↑M, if 0 ≤ n then a (f n.toNat) else 0; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ (∑ n ∈ Finset.Icc 0 ↑M, if 0 ≤ n then a (f n.toNat) else 0) = ∑ n ∈ Finset.Iic M, a (f n); a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ ↑M ≥ 0; All goals completed! 🐙
_ ≤ L' := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ T ↑M ≤ L' a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.nonneghconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesf:ℕ → ℕhf:Function.Bijective faf:ℕ → ℝ := fun n => @_fvar.14602 (@_fvar.14605 n)haf:{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.nonneg :=
fun n =>
if h : n ≥ 0 then
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_true h))))
ge_iff_le._simp_1))
(Chapter7.Series.converges_of_permute_nonneg._proof_1 _fvar.14604 _fvar.14606 n h
(@_fvar.14603 ↑(@_fvar.14605 n.toNat)))
else
of_eq_true
(Eq.trans
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_false (@_fvar.14617 n.toNat) 0 (Eq.trans ge_iff_le._simp_1 (eq_false h))))
ge_iff_le._simp_1)
(le_refl._simp_1 0))S:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14602 n.toNat else 0, vanish := ⋯ }.partialT:ℤ → ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.14617 n.toNat else 0, vanish := ⋯ }.partialhSmono:Monotone _fvar.19926 := Chapter7.Series.partial_of_nonneg _fvar.14603hTmono:Monotone _fvar.20097 := Chapter7.Series.partial_of_nonneg _fvar.14800L:ℝ := iSup _fvar.19926L':ℝ := iSup _fvar.20097hSBound:∃ Q, ∀ (N : ℤ), @_fvar.19926 N ≤ Q := (Chapter7.Series.converges_of_nonneg_iff _fvar.14603).mp _fvar.14604hTL:∀ (M : ℤ), @_fvar.20097 M ≤ _fvar.20577 :=
fun M =>
if hM : M ≥ 0 then
let Y := Finset.Iic M.toNat;
have hN :=
Exists.intro ((Finset.image _fvar.14605 Y).sup id) fun m hm =>
Finset.le_sup
(Chapter7.Series.converges_of_permute_nonneg._proof_3 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 M hM m hm);
(fun N hN =>
Trans.trans
(Trans.trans
(Trans.trans
(Trans.trans
(Eq.mpr
(id
(congr
(congrArg Eq
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 (@_fvar.14605 n.toNat) else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 (@_fvar.14605 n.toNat)))
fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 M)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 (@_fvar.14605 x.toNat) else 0))))
(Finset.sum_congr (Eq.refl Y) fun x a => Eq.refl (@_fvar.14602 (@_fvar.14605 x)))))
(Chapter7.Series.sum_eq_sum _fvar.14617 hM))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1))
e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ (_fvar.14605 '' ↑Y).toFinset, @_fvar.14602 n)
(∑ x ∈ Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y, @_fvar.14602 x)
(Finset.sum_congr
(of_eq_true
(Eq.trans
(congrArg (fun x => x = Finset.image (fun ⦃x₁⦄ => @_fvar.14605 x₁) Y)
(Eq.trans (Set.toFinset_image _fvar.14605 ↑Y)
(congrArg (Finset.image _fvar.14605) (Finset.toFinset_coe Y))))
(eq_self (Finset.image _fvar.14605 Y))))
fun x a => Eq.refl (@_fvar.14602 x))
(∑ m ∈ Y, @_fvar.14617 m) (∑ x ∈ Y, @_fvar.14602 (@_fvar.14605 x))
(Eq.refl (∑ m ∈ Y, @_fvar.14617 m))))
(Finset.sum_image fun ⦃x₁⦄ a ⦃x₂⦄ a => Function.Bijective.injective _fvar.14606))))
(Finset.sum_le_sum_of_subset_of_nonneg
(fun ⦃a⦄ a_1 =>
Eq.mpr (id Finset.mem_Iic._simp_1)
(Exists.casesOn
(Eq.mp
(congrArg Chapter7.Series.converges
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
_fvar.14604)
fun w h =>
Exists.casesOn
(Eq.mp
(congrArg Exists
(funext fun Q =>
forall_congr fun N =>
congrArg (fun x => x.partial N ≤ Q)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a =>
Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602))))
_fvar.20877)
fun w_1 h_1 =>
Exists.casesOn
(Eq.mp
(Eq.trans
(Eq.trans
(congrArg (fun x => a ∈ x)
(Eq.trans
(Eq.trans
(Set.toFinset_congr (congrArg (Set.image _fvar.14605) (Finset.coe_Iic M.toNat)))
(Set.toFinset_image _fvar.14605 (Set.Iic M.toNat)))
(congrArg (Finset.image _fvar.14605) (Set.toFinset_Iic M.toNat))))
Finset.mem_image._simp_1)
(congrArg Exists
(funext fun a_2 =>
congrArg (fun x => x ∧ @_fvar.14605 a_2 = a)
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM)))))))
a_1)
fun w_2 h_2 =>
And.casesOn h_2 fun left right =>
right ▸
of_eq_true
((fun m a =>
eq_true
(Eq.mp
(forall_congr fun m =>
implies_congr
(Eq.trans Finset.mem_Iic._simp_1
(Int.le_toNat._simp_1 (id (Eq.mp ge_iff_le._simp_1 hM))))
(Eq.refl (@_fvar.14605 m ≤ N)))
hN m a))
w_2 left)))
fun i a a =>
id
(Eq.mp
(Eq.trans
(congrArg (fun x => x ≥ 0)
(ite_cond_eq_true (@_fvar.14602 (↑i).toNat) 0
(Eq.trans ge_iff_le._simp_1 (Nat.cast_nonneg._simp_1 i))))
ge_iff_le._simp_1)
(@_fvar.14603 ↑i))))
(Eq.mpr
(id
(congrArg (Eq (∑ n ∈ Finset.Iic N, @_fvar.14602 n))
(Eq.trans
(congrArg (fun x => x.partial ↑N)
((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.14602 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14602 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14602 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14602)))
(Finset.sum_congr (Eq.refl (Finset.Icc 0 ↑N)) fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14602 x.toNat else 0)))))
(Eq.symm (Chapter7.Series.sum_eq_sum _fvar.14602 (Nat.cast_nonneg' N)))))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x)))
forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
↑N))
(Classical.choose hN) (Classical.choose_spec hN)
else
have hM' :=
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 M)
(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 (M ^ 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 + (M ^ 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 (M ^ 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 M)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul M (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 (M ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero M (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 hM))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a)));
Eq.mpr
(id
(Eq.trans
(congrArg (fun x => x ≤ _fvar.20577)
(Eq.trans
(congrArg (fun x => x.partial M)
((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.14617 n.toNat else 0)
(fun n => if 0 ≤ n then @_fvar.14617 n.toNat else 0)
(funext fun n =>
ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.14617 n.toNat)) fun a => Eq.refl 0)
(Chapter7.Series.instCoe._proof_1 _fvar.14617)))
(Finset.sum_congr (Finset.Icc_eq_empty_of_lt hM') fun x a =>
Eq.refl (if 0 ≤ x then @_fvar.14617 x.toNat else 0))))
ge_iff_le._simp_1))
(Eq.mpr
(eq_of_heq
((fun α self self' e'_2 a a' e'_3 a_1 =>
Eq.casesOn (motive := fun a_2 x => self' = a_2 → e'_2 ≍ x → (a ≤ a_1) ≍ (a' ≤ a_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun self' => ∀ (e_2 : self = self'), e_2 ≍ Eq.refl self → (a ≤ a_1) ≍ (a' ≤ a_1))
(fun e_2 h =>
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))
(Eq.symm h) e'_2)
(Eq.refl self') (HEq.refl e'_2))
ℝ Real.instLE Real.instConditionallyCompleteLinearOrder.toSemilatticeInf.toLE (Eq.refl Real.instLE) 0
(@_fvar.19926 (-1)) (Eq.refl 0) _fvar.20577))
(le_ciSup
(of_eq_true
(Eq.trans
(congrArg Exists
(funext fun x =>
congrArg (fun x_1 => x ∈ setOf x_1)
(funext fun x =>
Eq.trans
(forall_congr fun ⦃a⦄ =>
Eq.trans (implies_congr Set.mem_range._simp_1 (Eq.refl (a ≤ x))) forall_exists_index._simp_1)
forall_apply_eq_imp_iff._simp_1)))
(eq_true _fvar.20877)))
(-1)))hTbound:∃ Q, ∀ (M : ℤ), @_fvar.20097 M ≤ Q := Exists.intro _fvar.20577 _fvar.247770N:ℤhN:N ≥ 0X:Finset ℕ := Finset.Iic (Int.toNat _fvar.469256)M:ℕhM:∀ n ∈ X, ∃ m, f m = n ∧ m ≤ Msum_eq_sum:∀ (b : ℕ → ℝ) {N : ℤ}, N ≥ 0 → (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0) = ∑ n ∈ Finset.Iic N.toNat, b n :=
fun b {N} hN =>
Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ (∑ n ∈ Finset.Icc 0 N, if 0 ≤ n then b n.toNat else 0)
(∑ x ∈ Finset.image Int.ofNat (Finset.Iic N.toNat), if 0 ≤ x then b x.toNat else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists (funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Iic._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.converges_of_permute_nonneg._proof_5 _fvar.469256 hN x left right a),
mpr :=
Chapter7.Series.converges_of_permute_nonneg._proof_6 _fvar.14603 _fvar.14604 _fvar.14606 _fvar.14800
_fvar.20439 _fvar.20560 _fvar.20877 _fvar.247770 _fvar.468509 _fvar.469256 _fvar.469329 _fvar.482509
_fvar.482513 b hN x })
fun x a => Eq.refl (if 0 ≤ x then b x.toNat else 0))
(∑ n ∈ Finset.Iic N.toNat, b n) (∑ x ∈ Finset.Iic N.toNat, if 0 ≤ Int.ofNat x then b (Int.ofNat x).toNat else 0)
(Finset.sum_congr (Eq.refl (Finset.Iic N.toNat)) fun x a => Eq.refl (b x))))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Iic N.toNat))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))⊢ BddAbove (Set.range T); All goals completed! 🐙
All goals completed! 🐙Example 7.4.2
theorem Series.zeta_2_converges : (fun n:ℕ ↦ 1/(n+1:ℝ)^2 : Series).converges := ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => 1 / (↑n + 1) ^ 2) n.toNat else 0, vanish := ⋯ }.converges All goals completed! 🐙theorem Series.permuted_zeta_2_converges :
(fun n:ℕ ↦ if Even n then 1/(n+2:ℝ)^2 else 1/(n:ℝ)^2 : Series).converges := ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => if Even n then 1 / (↑n + 2) ^ 2 else 1 / ↑n ^ 2) n.toNat else 0,
vanish := ⋯ }.converges
All goals completed! 🐙theorem Series.permuted_zeta_2_eq_zeta_2 :
(fun n:ℕ ↦ if Even n then 1/(n+2:ℝ)^2 else 1/(n:ℝ)^2 : Series).sum = (fun n:ℕ ↦ 1/(n+1:ℝ)^2 : Series).sum := ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => if Even n then 1 / (↑n + 2) ^ 2 else 1 / ↑n ^ 2) n.toNat else 0,
vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => 1 / (↑n + 1) ^ 2) n.toNat else 0, vanish := ⋯ }.sum
All goals completed! 🐙Proposition 7.4.3 (Rearrangement of series)
theorem Series.absConverges_of_permute {a:ℕ → ℝ} (ha : (a:Series).absConverges)
{f: ℕ → ℕ} (hf: Function.Bijective f) :
(fun n ↦ a (f n):Series).absConverges ∧ (a:Series).sum = (fun n ↦ a (f n) : Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
-- This proof is written to follow the structure of the original text.
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sum⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
have habs : (fun n ↦ |a (f n)| : Series).converges ∧ L = (fun n ↦ |a (f n)| : Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629⊢ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs =
{ m := 0, seq := fun n => if n ≥ 0 then |a n.toNat| else 0, vanish := ⋯ }a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a n|) n.toNat else 0, vanish := ⋯ }.nonnega:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a n|) n.toNat else 0, vanish := ⋯ }.converges
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629⊢ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs =
{ m := 0, seq := fun n => if n ≥ 0 then |a n.toNat| else 0, vanish := ⋯ } a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629⊢ (fun n => if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = fun n => if 0 ≤ n then |a n.toNat| else 0; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤ⊢ (if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = if 0 ≤ n then |a n.toNat| else 0; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh✝:n ≥ 0⊢ (if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = if 0 ≤ n then |a n.toNat| else 0a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh✝:¬n ≥ 0⊢ (if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = if 0 ≤ n then |a n.toNat| else 0 a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh✝:n ≥ 0⊢ (if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = if 0 ≤ n then |a n.toNat| else 0a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh✝:¬n ≥ 0⊢ (if 0 ≤ n then |if 0 ≤ n then a n.toNat else 0| else 0) = if 0 ≤ n then |a n.toNat| else 0 All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a n|) n.toNat else 0, vanish := ⋯ }.nonneg a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a n|) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh:n ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a n|) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh:¬n ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a n|) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0 a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh:n ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a n|) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh:¬n ≥ 0⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a n|) n.toNat else 0, vanish := ⋯ }.seq n ≥ 0 All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤ⊢ (if n ≥ 0 then (fun n => |a n|) n.toNat else 0) =
if h : n ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.m then
(fun n => |{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩
else 0; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh✝:n ≥ 0⊢ (if n ≥ 0 then (fun n => |a n|) n.toNat else 0) =
if h : n ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.m then
(fun n => |{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩
else 0a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh✝:¬n ≥ 0⊢ (if n ≥ 0 then (fun n => |a n|) n.toNat else 0) =
if h : n ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.m then
(fun n => |{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩
else 0 a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh✝:n ≥ 0⊢ (if n ≥ 0 then (fun n => |a n|) n.toNat else 0) =
if h : n ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.m then
(fun n => |{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩
else 0a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629n:ℤh✝:¬n ≥ 0⊢ (if n ≥ 0 then (fun n => |a n|) n.toNat else 0) =
if h : n ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.m then
(fun n => |{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩
else 0 All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sum⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
L' = { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.absConverges ∧
L' = { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)this:{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.absConverges ∧
L' = { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.suma:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)this:{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.absConverges ∧
L' = { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.sum a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)this:{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'⊢ { m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.abs.converges
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)this:{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'n:ℤ⊢ (if h : n ≥ { m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.m then
(fun n => |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩
else 0) =
if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0; a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)this:{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'n:ℤh✝:n ≥ 0⊢ (if h : n ≥ { m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.m then
(fun n => |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩
else 0) =
if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)this:{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'n:ℤh✝:¬n ≥ 0⊢ (if h : n ≥ { m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.m then
(fun n => |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩
else 0) =
if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0 a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)this:{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'n:ℤh✝:n ≥ 0⊢ (if h : n ≥ { m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.m then
(fun n => |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩
else 0) =
if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)this:{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.convergesTo L'n:ℤh✝:¬n ≥ 0⊢ (if h : n ≥ { m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.m then
(fun n => |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.seq ↑n|) ⟨n, h⟩
else 0) =
if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0 All goals completed! 🐙
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)⊢ ∀ (ε : ℝ),
0 < ε →
∃ a,
∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε
a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.convergesf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:?_mvar.846824 := Chapter7.Series.converges_of_absConverges _fvar.846629habs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.converges ∧
_fvar.846722 =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |@_fvar.846628 (@_fvar.846630 n)|) n.toNat else 0,
vanish := ⋯ }.sum :=
?_mvar.846963L':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.846630 n)ε:ℝhε:0 < ε⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε
a:ℕ → ℝha:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < ε⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤhN₁:N₁ ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.mha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε
have : ∃ N ≥ N₁, |(a:Series).partial N - L'| < ε/2 := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁hconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergesTo
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum⊢ ∃ N ≥ N₁, |{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁hconv:∀ (ε : ℝ),
0 < ε →
∃ a_2,
∀ (b : ℤ),
a_2 ≤ b →
|{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b -
{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| <
ε⊢ ∃ N ≥ N₁, |{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁hconv:∀ (ε : ℝ),
0 < ε →
∃ a_2,
∀ (b : ℤ),
a_2 ≤ b →
|{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b -
{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| <
εN:ℤhN:∀ (b : ℤ),
N ≤ b →
|{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b -
{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| <
ε / 2⊢ ∃ N ≥ N₁, |{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2
use max N N₁, (a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁hconv:∀ (ε : ℝ),
0 < ε →
∃ a_2,
∀ (b : ℤ),
a_2 ≤ b →
|{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b -
{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| <
εN:ℤhN:∀ (b : ℤ),
N ≤ b →
|{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b -
{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| <
ε / 2⊢ max N N₁ ≥ N₁ All goals completed! 🐙); a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁hconv:∀ (ε : ℝ),
0 < ε →
∃ a_2,
∀ (b : ℤ),
a_2 ≤ b →
|{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b -
{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| <
εN:ℤhN:∀ (b : ℤ),
N ≤ b →
|{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.partial b -
{ m := 0, seq := fun n => if 0 ≤ n then a n.toNat else 0, vanish := ⋯ }.sum| <
ε / 2⊢ N ≤ max N N₁; All goals completed! 🐙
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε
have hNpos : N ≥ 0 := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε
have : ∃ M, ∀ n ≤ N.toNat, finv n ≤ M := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228⊢ ∀ n ≤ N.toNat, finv n ≤ (Finset.image finv (Finset.Iic N.toNat)).sup id
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228n:ℕhn:n ≤ N.toNat⊢ finv n ≤ (Finset.image finv (Finset.Iic N.toNat)).sup id
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228n:ℕhn:n ≤ N.toNat⊢ (if h : ∃ x, f x = n then h.choose else Classical.arbitrary ℕ) ∈ Finset.image finv (Finset.Iic N.toNat); a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228n:ℕhn:n ≤ N.toNat⊢ ∃ a ≤ N.toNat, finv a = if h : ∃ x, f x = n then h.choose else Classical.arbitrary ℕ; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228n:ℕhn:n ≤ N.toNat⊢ finv n = if h : ∃ x, f x = n then h.choose else Classical.arbitrary ℕ; All goals completed! 🐙
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ M⊢ ∃ a, ∀ (b : ℤ), a ≤ b → |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ M⊢ ∀ (b : ℤ), ↑M ≤ b → |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial b - L'| < ε; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'⊢ |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial M' - L'| < ε
have hM'_pos : M' ≥ 0 := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙
have why : (Finset.Iic M'.toNat).image f ⊇ .Iic N.toNat := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum
All goals completed! 🐙
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 := ?_mvar.1194057why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := ?_mvar.1196288X:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial M' - L'| < ε
have claim : ∑ m ∈ .Iic M'.toNat, a (f m) = ∑ n ∈ .Iic N.toNat, a n + ∑ n ∈ X, a n := calc
_ = ∑ n ∈ (Finset.Iic M'.toNat).image f , a n := a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ ∑ m ∈ Finset.Iic M'.toNat, a (f m) = ∑ n ∈ Finset.image f (Finset.Iic M'.toNat), a n
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ ∑ n ∈ Finset.image f (Finset.Iic M'.toNat), a n = ∑ m ∈ Finset.Iic M'.toNat, a (f m); a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ Set.InjOn f ↑(Finset.Iic M'.toNat); All goals completed! 🐙
_ = _ := a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ ∑ n ∈ Finset.image f (Finset.Iic M'.toNat), a n = ∑ n ∈ Finset.Iic N.toNat, a n + ∑ n ∈ X, a n
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ Finset.image f (Finset.Iic M'.toNat) = Finset.Iic N.toNat ∪ Xa:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ DecidableEq ℕa:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ Disjoint (Finset.Iic N.toNat) X
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ Finset.image f (Finset.Iic M'.toNat) = Finset.Iic N.toNat ∪ X All goals completed! 🐙
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ DecidableEq ℕ All goals completed! 🐙
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)⊢ ∀ ⦃a : ℕ⦄, a ∈ X → a ∉ Finset.Iic N.toNat; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)n:ℕhn:n ∈ X⊢ n ∉ Finset.Iic N.toNat; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)n:ℕhn:n ∈ Finset.image f (Finset.Iic M'.toNat) ∧ n ∉ Finset.Iic N.toNat⊢ n ∉ Finset.Iic N.toNat; All goals completed! 🐙
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 := ?_mvar.1194057why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := ?_mvar.1196288X:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
Trans.trans ?_mvar.1197196 ?_mvar.1197206q':ℕhq:q' ∈ upperBounds ↑X⊢ |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial M' - L'| < ε
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 := ?_mvar.1184633finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 := ?_mvar.1194057why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := ?_mvar.1196288X:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
Trans.trans ?_mvar.1197196 ?_mvar.1197206q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)⊢ |{ m := 0, seq := fun n => if 0 ≤ n then af n.toNat else 0, vanish := ⋯ }.partial M' - L'| < ε
have why2 : X ⊆ Finset.Icc (N.toNat+1) q := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙
have claim2 : |∑ n ∈ X, a n| ≤ ε/2 := calc
_ ≤ ∑ n ∈ X, |a n| := X.abs_sum_le_sum_abs a
_ ≤ ∑ n ∈ .Icc (N.toNat+1) q, |a n| := a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ∑ n ∈ X, |a n| ≤ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n|
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ∀ i ∈ Finset.Icc (N.toNat + 1) q, i ∉ X → 0 ≤ |a i|; All goals completed! 🐙
_ ≤ ε/2 := a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| ≤ ε / 2
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| =
|∑ n ∈ Finset.Icc (↑N.toNat + 1) ↑q,
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n|a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ↑N.toNat + 1 ≥ N₁a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ↑q ≥ N₁ a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| =
|∑ n ∈ Finset.Icc (↑N.toNat + 1) ↑q,
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n|a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ↑N.toNat + 1 ≥ N₁a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ↑q ≥ N₁ try All goals completed! 🐙
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| =
|∑ x ∈ Finset.Icc (N + 1) ↑q, if 0 ≤ x then |if 0 ≤ x then a x.toNat else 0| else 0|; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ ∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n| =
∑ x ∈ Finset.Icc (N + 1) ↑q, if 0 ≤ x then |if 0 ≤ x then a x.toNat else 0| else 0; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ (∑ x ∈ Finset.Icc (N + 1) ↑q, if 0 ≤ x then |if 0 ≤ x then a x.toNat else 0| else 0) =
∑ n ∈ Finset.Icc (N.toNat + 1) q, |a n|
convert Finset.sum_image (g := fun (n:ℕ) ↦ (n:ℤ)) (a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorry⊢ Set.InjOn (fun n => ↑n) ↑?m.2320 All goals completed! 🐙) using 2
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryx:ℤ⊢ x ∈ Finset.Icc (N + 1) ↑q ↔ x ∈ Finset.image (fun n => ↑n) (Finset.Icc (N.toNat + 1) q); a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryx:ℤ⊢ N + 1 ≤ x ∧ x ≤ ↑q ↔ ∃ a, (N.toNat + 1 ≤ a ∧ a ≤ q) ∧ ↑a = x; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryx:ℤ⊢ N + 1 ≤ x ∧ x ≤ ↑q → ∃ a, (N.toNat + 1 ≤ a ∧ a ≤ q) ∧ ↑a = xa:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryx:ℤ⊢ (∃ a, (N.toNat + 1 ≤ a ∧ a ≤ q) ∧ ↑a = x) → N + 1 ≤ x ∧ x ≤ ↑q
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryx:ℤ⊢ N + 1 ≤ x ∧ x ≤ ↑q → ∃ a, (N.toNat + 1 ≤ a ∧ a ≤ q) ∧ ↑a = x a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryx:ℤleft✝:N + 1 ≤ xright✝:x ≤ ↑q⊢ ∃ a, (N.toNat + 1 ≤ a ∧ a ≤ q) ∧ ↑a = x; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryx:ℤleft✝:N + 1 ≤ xright✝:x ≤ ↑q⊢ (N.toNat + 1 ≤ x.toNat ∧ x.toNat ≤ q) ∧ ↑x.toNat = x; All goals completed! 🐙
All goals completed! 🐙
calc
_ ≤ |(af:Series).partial M' - (a:Series).partial N| + |(a:Series).partial N - L'| := abs_sub_le _ _ _
_ < |(af:Series).partial M' - (a:Series).partial N| + ε/2 := a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryclaim2:|∑ n ∈ _fvar.1196544, @_fvar.846628 n| ≤ _fvar.1078235 / 2 :=
Trans.trans
(Trans.trans (Finset.abs_sum_le_sum_abs _fvar.846628 _fvar.1196544)
(Finset.sum_le_sum_of_subset_of_nonneg _fvar.1206561
(of_eq_true
(Eq.trans
(forall_congr fun i =>
Eq.trans
(implies_congr Finset.mem_Icc._simp_1
(Eq.trans (implies_congr (Eq.refl (i ∉ _fvar.1196544)) (one_le_mabs._simp_4 (@_fvar.846628 i)))
(implies_true (i ∉ _fvar.1196544))))
(implies_true (Int.toNat _fvar.1184577 + 1 ≤ i ∧ i ≤ _fvar.1206081)))
(implies_true ℕ)))))
(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 (∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
|∑ n ∈ Finset.Icc (↑(Int.toNat _fvar.1184577) + 1) ↑_fvar.1206081,
{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0,
vanish := Chapter7.Series.instCoe._proof_1 _fvar.846628 }.abs.seq
n|
(Eq.mpr
(id
(congrArg (fun x => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = |x|)
(Finset.sum_congr
(congrArg (fun x => Finset.Icc (x + 1) ↑_fvar.1206081)
(Eq.trans (Int.ofNat_toNat _fvar.1184577) (sup_of_le_left _fvar.1184634)))
fun x a =>
dite_congr ge_iff_le._simp_1
(fun h =>
congrArg abs
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.846628 x.toNat)) fun a => Eq.refl 0))
fun h => Eq.refl 0)))
(Eq.mpr
(id
(congrArg (fun _a => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = _a)
(abs_of_nonneg
(Finset.sum_nonneg fun i x =>
Mathlib.Meta.Positivity.ite_nonneg✝ (0 ≤ i)
(IsAbsoluteValue.abv_nonneg abs (if 0 ≤ i then @_fvar.846628 i.toNat else 0))
(Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ
(∑ x ∈ Finset.Icc (_fvar.1184577 + 1) ↑_fvar.1206081,
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(∑ x ∈ Finset.image (fun n => ↑n) (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081),
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists
(funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Icc._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_18 _fvar.1078345 _fvar.1184577
_fvar.1184634 _fvar.1193903 _fvar.1194012 _fvar.1206066 x left right a),
mpr :=
Chapter7.Series.absConverges_of_permute._proof_19 _fvar.1078225 _fvar.1078229
_fvar.1078231 _fvar.1078232 _fvar.1078235 _fvar.1078236 _fvar.1078345 _fvar.1078357
_fvar.1079286 _fvar.1184577 _fvar.1184586 _fvar.1184590 _fvar.1184634 _fvar.1193903
_fvar.1193907 _fvar.1194012 _fvar.1194015 _fvar.1194058 _fvar.1196289 _fvar.1197274
_fvar.1206066 _fvar.1206069 _fvar.1206561 x })
fun x a => Eq.refl (if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0))
(∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
(∑ x ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081,
if 0 ≤ ↑x then |if 0 ≤ ↑x then @_fvar.846628 (↑x).toNat else 0| else 0)
(Finset.sum_congr (Eq.refl (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081)) fun x a =>
Eq.refl |@_fvar.846628 x|)))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))))))
(_fvar.1078235 / 2)))
(@_fvar.1078357 (↑(Int.toNat _fvar.1184577) + 1)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_16 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 a)
(↑_fvar.1206081)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_17 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 _fvar.1206066 a)))⊢ |{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial M' -
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N| +
|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| <
|{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial M' -
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N| +
ε / 2 All goals completed! 🐙
_ ≤ ε/2 + ε/2 := a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryclaim2:|∑ n ∈ _fvar.1196544, @_fvar.846628 n| ≤ _fvar.1078235 / 2 :=
Trans.trans
(Trans.trans (Finset.abs_sum_le_sum_abs _fvar.846628 _fvar.1196544)
(Finset.sum_le_sum_of_subset_of_nonneg _fvar.1206561
(of_eq_true
(Eq.trans
(forall_congr fun i =>
Eq.trans
(implies_congr Finset.mem_Icc._simp_1
(Eq.trans (implies_congr (Eq.refl (i ∉ _fvar.1196544)) (one_le_mabs._simp_4 (@_fvar.846628 i)))
(implies_true (i ∉ _fvar.1196544))))
(implies_true (Int.toNat _fvar.1184577 + 1 ≤ i ∧ i ≤ _fvar.1206081)))
(implies_true ℕ)))))
(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 (∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
|∑ n ∈ Finset.Icc (↑(Int.toNat _fvar.1184577) + 1) ↑_fvar.1206081,
{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0,
vanish := Chapter7.Series.instCoe._proof_1 _fvar.846628 }.abs.seq
n|
(Eq.mpr
(id
(congrArg (fun x => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = |x|)
(Finset.sum_congr
(congrArg (fun x => Finset.Icc (x + 1) ↑_fvar.1206081)
(Eq.trans (Int.ofNat_toNat _fvar.1184577) (sup_of_le_left _fvar.1184634)))
fun x a =>
dite_congr ge_iff_le._simp_1
(fun h =>
congrArg abs
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.846628 x.toNat)) fun a => Eq.refl 0))
fun h => Eq.refl 0)))
(Eq.mpr
(id
(congrArg (fun _a => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = _a)
(abs_of_nonneg
(Finset.sum_nonneg fun i x =>
Mathlib.Meta.Positivity.ite_nonneg✝ (0 ≤ i)
(IsAbsoluteValue.abv_nonneg abs (if 0 ≤ i then @_fvar.846628 i.toNat else 0))
(Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ
(∑ x ∈ Finset.Icc (_fvar.1184577 + 1) ↑_fvar.1206081,
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(∑ x ∈ Finset.image (fun n => ↑n) (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081),
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists
(funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Icc._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_18 _fvar.1078345 _fvar.1184577
_fvar.1184634 _fvar.1193903 _fvar.1194012 _fvar.1206066 x left right a),
mpr :=
Chapter7.Series.absConverges_of_permute._proof_19 _fvar.1078225 _fvar.1078229
_fvar.1078231 _fvar.1078232 _fvar.1078235 _fvar.1078236 _fvar.1078345 _fvar.1078357
_fvar.1079286 _fvar.1184577 _fvar.1184586 _fvar.1184590 _fvar.1184634 _fvar.1193903
_fvar.1193907 _fvar.1194012 _fvar.1194015 _fvar.1194058 _fvar.1196289 _fvar.1197274
_fvar.1206066 _fvar.1206069 _fvar.1206561 x })
fun x a => Eq.refl (if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0))
(∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
(∑ x ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081,
if 0 ≤ ↑x then |if 0 ≤ ↑x then @_fvar.846628 (↑x).toNat else 0| else 0)
(Finset.sum_congr (Eq.refl (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081)) fun x a =>
Eq.refl |@_fvar.846628 x|)))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))))))
(_fvar.1078235 / 2)))
(@_fvar.1078357 (↑(Int.toNat _fvar.1184577) + 1)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_16 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 a)
(↑_fvar.1206081)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_17 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 _fvar.1206066 a)))⊢ |{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial M' -
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N| +
ε / 2 ≤
ε / 2 + ε / 2
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryclaim2:|∑ n ∈ _fvar.1196544, @_fvar.846628 n| ≤ _fvar.1078235 / 2 :=
Trans.trans
(Trans.trans (Finset.abs_sum_le_sum_abs _fvar.846628 _fvar.1196544)
(Finset.sum_le_sum_of_subset_of_nonneg _fvar.1206561
(of_eq_true
(Eq.trans
(forall_congr fun i =>
Eq.trans
(implies_congr Finset.mem_Icc._simp_1
(Eq.trans (implies_congr (Eq.refl (i ∉ _fvar.1196544)) (one_le_mabs._simp_4 (@_fvar.846628 i)))
(implies_true (i ∉ _fvar.1196544))))
(implies_true (Int.toNat _fvar.1184577 + 1 ≤ i ∧ i ≤ _fvar.1206081)))
(implies_true ℕ)))))
(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 (∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
|∑ n ∈ Finset.Icc (↑(Int.toNat _fvar.1184577) + 1) ↑_fvar.1206081,
{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0,
vanish := Chapter7.Series.instCoe._proof_1 _fvar.846628 }.abs.seq
n|
(Eq.mpr
(id
(congrArg (fun x => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = |x|)
(Finset.sum_congr
(congrArg (fun x => Finset.Icc (x + 1) ↑_fvar.1206081)
(Eq.trans (Int.ofNat_toNat _fvar.1184577) (sup_of_le_left _fvar.1184634)))
fun x a =>
dite_congr ge_iff_le._simp_1
(fun h =>
congrArg abs
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.846628 x.toNat)) fun a => Eq.refl 0))
fun h => Eq.refl 0)))
(Eq.mpr
(id
(congrArg (fun _a => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = _a)
(abs_of_nonneg
(Finset.sum_nonneg fun i x =>
Mathlib.Meta.Positivity.ite_nonneg✝ (0 ≤ i)
(IsAbsoluteValue.abv_nonneg abs (if 0 ≤ i then @_fvar.846628 i.toNat else 0))
(Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ
(∑ x ∈ Finset.Icc (_fvar.1184577 + 1) ↑_fvar.1206081,
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(∑ x ∈ Finset.image (fun n => ↑n) (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081),
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists
(funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Icc._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_18 _fvar.1078345 _fvar.1184577
_fvar.1184634 _fvar.1193903 _fvar.1194012 _fvar.1206066 x left right a),
mpr :=
Chapter7.Series.absConverges_of_permute._proof_19 _fvar.1078225 _fvar.1078229
_fvar.1078231 _fvar.1078232 _fvar.1078235 _fvar.1078236 _fvar.1078345 _fvar.1078357
_fvar.1079286 _fvar.1184577 _fvar.1184586 _fvar.1184590 _fvar.1184634 _fvar.1193903
_fvar.1193907 _fvar.1194012 _fvar.1194015 _fvar.1194058 _fvar.1196289 _fvar.1197274
_fvar.1206066 _fvar.1206069 _fvar.1206561 x })
fun x a => Eq.refl (if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0))
(∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
(∑ x ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081,
if 0 ≤ ↑x then |if 0 ≤ ↑x then @_fvar.846628 (↑x).toNat else 0| else 0)
(Finset.sum_congr (Eq.refl (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081)) fun x a =>
Eq.refl |@_fvar.846628 x|)))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))))))
(_fvar.1078235 / 2)))
(@_fvar.1078357 (↑(Int.toNat _fvar.1184577) + 1)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_16 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 a)
(↑_fvar.1206081)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_17 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 _fvar.1206066 a)))⊢ |{ m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial M' -
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N| ≤
ε / 2; a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryclaim2:|∑ n ∈ _fvar.1196544, @_fvar.846628 n| ≤ _fvar.1078235 / 2 :=
Trans.trans
(Trans.trans (Finset.abs_sum_le_sum_abs _fvar.846628 _fvar.1196544)
(Finset.sum_le_sum_of_subset_of_nonneg _fvar.1206561
(of_eq_true
(Eq.trans
(forall_congr fun i =>
Eq.trans
(implies_congr Finset.mem_Icc._simp_1
(Eq.trans (implies_congr (Eq.refl (i ∉ _fvar.1196544)) (one_le_mabs._simp_4 (@_fvar.846628 i)))
(implies_true (i ∉ _fvar.1196544))))
(implies_true (Int.toNat _fvar.1184577 + 1 ≤ i ∧ i ≤ _fvar.1206081)))
(implies_true ℕ)))))
(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 (∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
|∑ n ∈ Finset.Icc (↑(Int.toNat _fvar.1184577) + 1) ↑_fvar.1206081,
{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0,
vanish := Chapter7.Series.instCoe._proof_1 _fvar.846628 }.abs.seq
n|
(Eq.mpr
(id
(congrArg (fun x => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = |x|)
(Finset.sum_congr
(congrArg (fun x => Finset.Icc (x + 1) ↑_fvar.1206081)
(Eq.trans (Int.ofNat_toNat _fvar.1184577) (sup_of_le_left _fvar.1184634)))
fun x a =>
dite_congr ge_iff_le._simp_1
(fun h =>
congrArg abs
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.846628 x.toNat)) fun a => Eq.refl 0))
fun h => Eq.refl 0)))
(Eq.mpr
(id
(congrArg (fun _a => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = _a)
(abs_of_nonneg
(Finset.sum_nonneg fun i x =>
Mathlib.Meta.Positivity.ite_nonneg✝ (0 ≤ i)
(IsAbsoluteValue.abv_nonneg abs (if 0 ≤ i then @_fvar.846628 i.toNat else 0))
(Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ
(∑ x ∈ Finset.Icc (_fvar.1184577 + 1) ↑_fvar.1206081,
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(∑ x ∈ Finset.image (fun n => ↑n) (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081),
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists
(funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Icc._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_18 _fvar.1078345 _fvar.1184577
_fvar.1184634 _fvar.1193903 _fvar.1194012 _fvar.1206066 x left right a),
mpr :=
Chapter7.Series.absConverges_of_permute._proof_19 _fvar.1078225 _fvar.1078229
_fvar.1078231 _fvar.1078232 _fvar.1078235 _fvar.1078236 _fvar.1078345 _fvar.1078357
_fvar.1079286 _fvar.1184577 _fvar.1184586 _fvar.1184590 _fvar.1184634 _fvar.1193903
_fvar.1193907 _fvar.1194012 _fvar.1194015 _fvar.1194058 _fvar.1196289 _fvar.1197274
_fvar.1206066 _fvar.1206069 _fvar.1206561 x })
fun x a => Eq.refl (if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0))
(∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
(∑ x ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081,
if 0 ≤ ↑x then |if 0 ≤ ↑x then @_fvar.846628 (↑x).toNat else 0| else 0)
(Finset.sum_congr (Eq.refl (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081)) fun x a =>
Eq.refl |@_fvar.846628 x|)))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))))))
(_fvar.1078235 / 2)))
(@_fvar.1078357 (↑(Int.toNat _fvar.1184577) + 1)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_16 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 a)
(↑_fvar.1206081)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_17 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 _fvar.1206066 a)))⊢ { m := 0, seq := fun n => if n ≥ 0 then af n.toNat else 0, vanish := ⋯ }.partial M' -
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N =
∑ n ∈ X, a n
a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryclaim2:|∑ n ∈ _fvar.1196544, @_fvar.846628 n| ≤ _fvar.1078235 / 2 :=
Trans.trans
(Trans.trans (Finset.abs_sum_le_sum_abs _fvar.846628 _fvar.1196544)
(Finset.sum_le_sum_of_subset_of_nonneg _fvar.1206561
(of_eq_true
(Eq.trans
(forall_congr fun i =>
Eq.trans
(implies_congr Finset.mem_Icc._simp_1
(Eq.trans (implies_congr (Eq.refl (i ∉ _fvar.1196544)) (one_le_mabs._simp_4 (@_fvar.846628 i)))
(implies_true (i ∉ _fvar.1196544))))
(implies_true (Int.toNat _fvar.1184577 + 1 ≤ i ∧ i ≤ _fvar.1206081)))
(implies_true ℕ)))))
(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 (∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
|∑ n ∈ Finset.Icc (↑(Int.toNat _fvar.1184577) + 1) ↑_fvar.1206081,
{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0,
vanish := Chapter7.Series.instCoe._proof_1 _fvar.846628 }.abs.seq
n|
(Eq.mpr
(id
(congrArg (fun x => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = |x|)
(Finset.sum_congr
(congrArg (fun x => Finset.Icc (x + 1) ↑_fvar.1206081)
(Eq.trans (Int.ofNat_toNat _fvar.1184577) (sup_of_le_left _fvar.1184634)))
fun x a =>
dite_congr ge_iff_le._simp_1
(fun h =>
congrArg abs
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.846628 x.toNat)) fun a => Eq.refl 0))
fun h => Eq.refl 0)))
(Eq.mpr
(id
(congrArg (fun _a => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = _a)
(abs_of_nonneg
(Finset.sum_nonneg fun i x =>
Mathlib.Meta.Positivity.ite_nonneg✝ (0 ≤ i)
(IsAbsoluteValue.abv_nonneg abs (if 0 ≤ i then @_fvar.846628 i.toNat else 0))
(Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ
(∑ x ∈ Finset.Icc (_fvar.1184577 + 1) ↑_fvar.1206081,
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(∑ x ∈ Finset.image (fun n => ↑n) (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081),
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists
(funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Icc._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_18 _fvar.1078345 _fvar.1184577
_fvar.1184634 _fvar.1193903 _fvar.1194012 _fvar.1206066 x left right a),
mpr :=
Chapter7.Series.absConverges_of_permute._proof_19 _fvar.1078225 _fvar.1078229
_fvar.1078231 _fvar.1078232 _fvar.1078235 _fvar.1078236 _fvar.1078345 _fvar.1078357
_fvar.1079286 _fvar.1184577 _fvar.1184586 _fvar.1184590 _fvar.1184634 _fvar.1193903
_fvar.1193907 _fvar.1194012 _fvar.1194015 _fvar.1194058 _fvar.1196289 _fvar.1197274
_fvar.1206066 _fvar.1206069 _fvar.1206561 x })
fun x a => Eq.refl (if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0))
(∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
(∑ x ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081,
if 0 ≤ ↑x then |if 0 ≤ ↑x then @_fvar.846628 (↑x).toNat else 0| else 0)
(Finset.sum_congr (Eq.refl (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081)) fun x a =>
Eq.refl |@_fvar.846628 x|)))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))))))
(_fvar.1078235 / 2)))
(@_fvar.1078357 (↑(Int.toNat _fvar.1184577) + 1)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_16 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 a)
(↑_fvar.1206081)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_17 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 _fvar.1206066 a)))⊢ ∑ n ∈ Finset.Iic M'.toNat, af n - ∑ n ∈ Finset.Iic N.toNat, a n = ∑ n ∈ X, a n; All goals completed! 🐙
_ = ε := a:ℕ → ℝha✝:∀ ε > 0,
∃ N ≥ { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.m,
∀ p ≥ N,
∀ q ≥ N,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ εf:ℕ → ℕhf:Function.Bijective fL:ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.abs.sumhconv:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.convergeshabs:{ m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.converges ∧
L = { m := 0, seq := fun n => if n ≥ 0 then (fun n => |a (f n)|) n.toNat else 0, vanish := ⋯ }.sumL':ℝ := { m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0, vanish := ⋯ }.sumaf:ℕ → ℝ := fun n => @_fvar.846628 (@_fvar.1078228 n)ε:ℝhε:0 < εN₁:ℤha:∀ p ≥ N₁,
∀ q ≥ N₁,
|∑ n ∈ Finset.Icc p q, { m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.abs.seq n| ≤ ε / 2hN₁:0 ≤ N₁N:ℤhN:N ≥ N₁hN2:|{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.partial N - L'| < ε / 2hNpos:_fvar.1184577 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1078345 (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
(_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.1078345 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1078345)
(Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1184577 (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_add_lt (_fvar.1078345 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1078345 (Nat.rawCast 1)
(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
(_fvar.1184577 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1184577)
(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 (_fvar.1184577 ^ 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 + (_fvar.1184577 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1184577 (Nat.rawCast 1)
(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 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
(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 _fvar.1079286))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1184586))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))finv:ℕ → ℕ := Function.invFun _fvar.1078228M:ℕhM:∀ n ≤ N.toNat, finv n ≤ MM':ℤhM':↑M ≤ M'hM'_pos:_fvar.1194012 ≥ 0 :=
le_of_not_gt 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.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.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℤ (Eq.refl 0)))
(Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul (↑_fvar.1193903) (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
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_zero_add
(↑_fvar.1193903 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ↑_fvar.1193903)
(Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul _fvar.1194012 (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_add_lt (↑_fvar.1193903 ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑_fvar.1193903) (Nat.rawCast 1)
(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
(_fvar.1194012 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf _fvar.1194012)
(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 (_fvar.1194012 ^ 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 + (_fvar.1194012 ^ 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_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.1194012 (Nat.rawCast 1)
(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 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
(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 (Mathlib.Tactic.Linarith.natCast_nonneg ℤ _fvar.1193903)))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le _fvar.1194015))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a))))why:Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) ⊇ Finset.Iic (Int.toNat _fvar.1184577) := sorryX:Finset ℕ := Finset.image _fvar.1078228 (Finset.Iic (Int.toNat _fvar.1194012)) \ Finset.Iic (Int.toNat _fvar.1184577)claim:∑ m ∈ Finset.Iic (Int.toNat _fvar.1194012), @_fvar.846628 (@_fvar.1078228 m) =
∑ n ∈ Finset.Iic (Int.toNat _fvar.1184577), @_fvar.846628 n + ∑ n ∈ _fvar.1196544, @_fvar.846628 n :=
failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)q':ℕhq:q' ∈ upperBounds ↑Xq:ℕ := max _fvar.1206066 (Int.toNat _fvar.1184577)why2:_fvar.1196544 ⊆ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081 := sorryclaim2:|∑ n ∈ _fvar.1196544, @_fvar.846628 n| ≤ _fvar.1078235 / 2 :=
Trans.trans
(Trans.trans (Finset.abs_sum_le_sum_abs _fvar.846628 _fvar.1196544)
(Finset.sum_le_sum_of_subset_of_nonneg _fvar.1206561
(of_eq_true
(Eq.trans
(forall_congr fun i =>
Eq.trans
(implies_congr Finset.mem_Icc._simp_1
(Eq.trans (implies_congr (Eq.refl (i ∉ _fvar.1196544)) (one_le_mabs._simp_4 (@_fvar.846628 i)))
(implies_true (i ∉ _fvar.1196544))))
(implies_true (Int.toNat _fvar.1184577 + 1 ≤ i ∧ i ≤ _fvar.1206081)))
(implies_true ℕ)))))
(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 (∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
|∑ n ∈ Finset.Icc (↑(Int.toNat _fvar.1184577) + 1) ↑_fvar.1206081,
{ m := 0, seq := fun n => if n ≥ 0 then @_fvar.846628 n.toNat else 0,
vanish := Chapter7.Series.instCoe._proof_1 _fvar.846628 }.abs.seq
n|
(Eq.mpr
(id
(congrArg (fun x => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = |x|)
(Finset.sum_congr
(congrArg (fun x => Finset.Icc (x + 1) ↑_fvar.1206081)
(Eq.trans (Int.ofNat_toNat _fvar.1184577) (sup_of_le_left _fvar.1184634)))
fun x a =>
dite_congr ge_iff_le._simp_1
(fun h =>
congrArg abs
(ite_congr ge_iff_le._simp_1 (fun a => Eq.refl (@_fvar.846628 x.toNat)) fun a => Eq.refl 0))
fun h => Eq.refl 0)))
(Eq.mpr
(id
(congrArg (fun _a => ∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n| = _a)
(abs_of_nonneg
(Finset.sum_nonneg fun i x =>
Mathlib.Meta.Positivity.ite_nonneg✝ (0 ≤ i)
(IsAbsoluteValue.abv_nonneg abs (if 0 ≤ i then @_fvar.846628 i.toNat else 0))
(Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))))
(Eq.symm
(Eq.mpr
(eq_of_heq
((fun α a a' e'_2 a_1 a'_1 e'_3 =>
Eq.casesOn (motive := fun a_2 x => a' = a_2 → e'_2 ≍ x → (a = a_1) ≍ (a' = a'_1)) e'_2
(fun h =>
Eq.ndrec (motive := fun a' => ∀ (e_2 : a = a'), e_2 ≍ Eq.refl a → (a = a_1) ≍ (a' = a'_1))
(fun e_2 h =>
Eq.casesOn (motive := fun a_2 x => a'_1 = a_2 → e'_3 ≍ x → (a = a_1) ≍ (a = a'_1)) e'_3
(fun h =>
Eq.ndrec (motive := fun a' =>
∀ (e_3 : a_1 = a'), e_3 ≍ Eq.refl a_1 → (a = a_1) ≍ (a = a'))
(fun e_3 h => HEq.refl (a = a_1)) (Eq.symm h) e'_3)
(Eq.refl a'_1) (HEq.refl e'_3))
(Eq.symm h) e'_2)
(Eq.refl a') (HEq.refl e'_2))
ℝ
(∑ x ∈ Finset.Icc (_fvar.1184577 + 1) ↑_fvar.1206081,
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(∑ x ∈ Finset.image (fun n => ↑n) (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081),
if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0)
(Finset.sum_congr
(Finset.ext fun x =>
Eq.mpr
(id
(congr (congrArg Iff Finset.mem_Icc._simp_1)
(Eq.trans Finset.mem_image._simp_1
(congrArg Exists
(funext fun a => congrArg (fun x_1 => x_1 ∧ ↑a = x) Finset.mem_Icc._simp_1)))))
{
mp := fun h =>
match h with
| ⟨left, right⟩ =>
Exists.intro x.toNat
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_18 _fvar.1078345 _fvar.1184577
_fvar.1184634 _fvar.1193903 _fvar.1194012 _fvar.1206066 x left right a),
mpr :=
Chapter7.Series.absConverges_of_permute._proof_19 _fvar.1078225 _fvar.1078229
_fvar.1078231 _fvar.1078232 _fvar.1078235 _fvar.1078236 _fvar.1078345 _fvar.1078357
_fvar.1079286 _fvar.1184577 _fvar.1184586 _fvar.1184590 _fvar.1184634 _fvar.1193903
_fvar.1193907 _fvar.1194012 _fvar.1194015 _fvar.1194058 _fvar.1196289 _fvar.1197274
_fvar.1206066 _fvar.1206069 _fvar.1206561 x })
fun x a => Eq.refl (if 0 ≤ x then |if 0 ≤ x then @_fvar.846628 x.toNat else 0| else 0))
(∑ n ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081, |@_fvar.846628 n|)
(∑ x ∈ Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081,
if 0 ≤ ↑x then |if 0 ≤ ↑x then @_fvar.846628 (↑x).toNat else 0| else 0)
(Finset.sum_congr (Eq.refl (Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081)) fun x a =>
Eq.refl |@_fvar.846628 x|)))
(Finset.sum_image
(of_eq_true
(Set.injOn_of_eq_iff_eq._simp_1 (↑(Finset.Icc (Int.toNat _fvar.1184577 + 1) _fvar.1206081))
(of_eq_true
(Eq.trans
(forall_congr fun x =>
Eq.trans
(forall_congr fun y =>
Eq.trans (congrArg (fun x_1 => x_1 ↔ x = y) Nat.cast_inj._simp_1) (iff_self (x = y)))
(implies_true ℕ))
(implies_true ℕ))))))))))
(_fvar.1078235 / 2)))
(@_fvar.1078357 (↑(Int.toNat _fvar.1184577) + 1)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_16 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 a)
(↑_fvar.1206081)
(Decidable.byContradiction fun a =>
Chapter7.Series.absConverges_of_permute._proof_17 _fvar.1078345 _fvar.1184577 _fvar.1184586 _fvar.1184634
_fvar.1193903 _fvar.1194012 _fvar.1206066 a)))⊢ ε / 2 + ε / 2 = ε All goals completed! 🐙theorem Series.ex_7_4_4_conv : (a_7_4_4 : Series).converges := ⊢ { m := 0, seq := fun n => if n ≥ 0 then a_7_4_4 n.toNat else 0, vanish := ⋯ }.converges All goals completed! 🐙theorem Series.ex_7_4_4_sum : (a_7_4_4 : Series).sum > 0 := ⊢ { m := 0, seq := fun n => if n ≥ 0 then a_7_4_4 n.toNat else 0, vanish := ⋯ }.sum > 0 All goals completed! 🐙abbrev Series.f_7_4_4 : ℕ → ℕ := fun n ↦ if n % 3 = 0 then 2 * (n/3) else 2*n - (n/3) - 1theorem Series.f_7_4_4_bij : Function.Bijective f_7_4_4 := ⊢ Function.Bijective f_7_4_4 All goals completed! 🐙theorem Series.ex_7_4_4'_conv : (fun n ↦ a_7_4_4 (f_7_4_4 n) :Series).converges := ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a_7_4_4 (f_7_4_4 n)) n.toNat else 0, vanish := ⋯ }.converges All goals completed! 🐙theorem Series.ex_7_4_4'_sum : (fun n ↦ a_7_4_4 (f_7_4_4 n) :Series).sum < 0 := ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a_7_4_4 (f_7_4_4 n)) n.toNat else 0, vanish := ⋯ }.sum < 0 All goals completed! 🐙Exercise 7.4.1
theorem Series.absConverges_of_subseries {a:ℕ → ℝ} (ha: (a:Series).absConverges) {f: ℕ → ℕ} (hf: StrictMono f) :
(fun n ↦ a (f n):Series).absConverges := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:StrictMono f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges All goals completed! 🐙
Exercise 7.4.2 : reprove Proposition 7.4.3 using Proposition 7.41, Proposition 7.2.14,
and expressing a n as the difference of a n + |a n| and |a n|.
theorem Series.absConverges_of_permute' {a:ℕ → ℝ} (ha : (a:Series).absConverges)
{f: ℕ → ℕ} (hf: Function.Bijective f) :
(fun n ↦ a (f n):Series).absConverges ∧ (a:Series).sum = (fun n ↦ a (f n):Series).sum := a:ℕ → ℝha:{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.absConvergesf:ℕ → ℕhf:Function.Bijective f⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.absConverges ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sum =
{ m := 0, seq := fun n => if n ≥ 0 then (fun n => a (f n)) n.toNat else 0, vanish := ⋯ }.sum All goals completed! 🐙end Chapter7