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:

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 0Set.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 Nx.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) 00 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 QBddAbove (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 QQ 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.20912Filter.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.20912BddAbove (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.20912T 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 QBddAbove (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 QQ 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 0T 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 0T 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 0T 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 0T 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 0T 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.2478870 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.247887BddAbove (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 Yf 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 Yf 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 NT 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 NT 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 NSet.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).toFinseta✝¹ 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).toFinset0 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 00 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 NN 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 NS 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 NBddAbove (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.468508L = 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 0S 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 0S 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 0S 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 0S 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 0S 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.4693820 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.469382BddAbove (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 = nm (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 = nm 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 MS 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 0Set.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 Nx.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