Analysis I, Section 7.2: Infinite 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 Chapter7open BigOperators

Definition 7.2.1 (Formal infinite series). This is similar to Chapter 6 sequence, but is manipulated differently. As with Chapter 5, we will start series from 0 by default.

@[ext] structure Series where m : seq : vanish : n < m, seq n = 0

Functions from ℕ to ℝ can be thought of as series.

instance Series.instCoe : Coe ( ) Series where coe := fun a { m := 0 seq n := if n 0 then a n.toNat else 0 vanish := a: n < 0, (if n 0 then a n.toNat else 0) = 0 All goals completed! 🐙 }
@[simp] theorem Series.eval_coe (a: ) (n: ) : (a: Series).seq n = a n := a: n:{ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := }.seq n = a n All goals completed! 🐙abbrev Series.mk' {m:} (a: { n // n m } ) : Series where m := m seq n := if h : n m then a n, h else 0 vanish := m:a:{ n // n m } n < m, (if h : n m then a n, h else 0) = 0 All goals completed! 🐙theorem Series.eval_mk' {m:} (a : { n // n m } ) {n : } (h:n m) : (Series.mk' a).seq n = a n, h := m:a:{ n // n m } n:h:n m(mk' a).seq n = a n, h All goals completed! 🐙

Definition 7.2.2 (Convergence of series)

abbrev Series.partial (s : Series) (N:) : := n Finset.Icc s.m N, s.seq n
theorem Series.partial_succ (s : Series) {N:} (h: N s.m-1) : s.partial (N+1) = s.partial N + s.seq (N+1) := s:SeriesN:h:N s.m - 1s.partial (N + 1) = s.partial N + s.seq (N + 1) s:SeriesN:h:N s.m - 1 n Finset.Icc s.m (N + 1), s.seq n = n Finset.Icc s.m N, s.seq n + s.seq (N + 1) s:SeriesN:h:N s.m - 1 n Finset.Icc s.m (N + 1), s.seq n = s.seq (N + 1) + s.partial N convert Finset.sum_insert (show N+1 Finset.Icc s.m N s:SeriesN:h:N s.m - 1s.partial (N + 1) = s.partial N + s.seq (N + 1) All goals completed! 🐙) s:SeriesN:h:N s.m - 1insert (N + 1) (Finset.Icc s.m N) = Finset.Icc s.m (N + 1); s:SeriesN:h:N s.m - 1s.m N + 1; All goals completed! 🐙theorem Series.partial_of_lt {s : Series} {N:} (h: N < s.m) : s.partial N = 0 := s:SeriesN:h:N < s.ms.partial N = 0 s:SeriesN:h:N < s.m n Finset.Icc s.m N, s.seq n = 0 s:SeriesN:h:N < s.m x Finset.Icc s.m N, s.seq x = 0 s:SeriesN:h:N < s.mn:hn:n Finset.Icc s.m Ns.seq n = 0; s:SeriesN:h:N < s.mn:hn:s.m n n Ns.seq n = 0; All goals completed! 🐙abbrev Series.convergesTo (s : Series) (L:) : Prop := Filter.atTop.Tendsto (s.partial) (nhds L)abbrev Series.converges (s : Series) : Prop := L, s.convergesTo Labbrev Series.diverges (s : Series) : Prop := ¬s.convergesopen Classical in noncomputable abbrev Series.sum (s : Series) : := if h : s.converges then h.choose else 0theorem Series.converges_of_convergesTo {s : Series} {L:} (h: s.convergesTo L) : s.converges := s:SeriesL:h:s.convergesTo Ls.converges All goals completed! 🐙

Remark 7.2.3

theorem Series.sum_of_converges {s : Series} {L:} (h: s.convergesTo L) : s.sum = L := s:SeriesL:h:s.convergesTo Ls.sum = L s:SeriesL:h:s.convergesTo LExists.choose = L All goals completed! 🐙
theorem Series.convergesTo_uniq {s : Series} {L L':} (h: s.convergesTo L) (h': s.convergesTo L') : L = L' := tendsto_nhds_unique h h'theorem Series.convergesTo_sum {s : Series} (h: s.converges) : s.convergesTo s.sum := s:Seriesh:s.convergess.convergesTo s.sum s:Seriesh:s.convergess.convergesTo (Exists.choose ); All goals completed! 🐙

Example 7.2.4

noncomputable abbrev Series.example_7_2_4 := mk' (m := 1) (fun n (2:)^(-n:))
theorem declaration uses 'sorry'Series.example_7_2_4a {N:} (hN: N 1) : example_7_2_4.partial N = 1 - (2:)^(-N) := N:hN:N 1example_7_2_4.partial N = 1 - 2 ^ (-N) All goals completed! 🐙theorem declaration uses 'sorry'Series.example_7_2_4b : example_7_2_4.convergesTo 1 := example_7_2_4.convergesTo 1 All goals completed! 🐙theorem declaration uses 'sorry'Series.example_7_2_4c : example_7_2_4.sum = 1 := example_7_2_4.sum = 1 All goals completed! 🐙noncomputable abbrev Series.example_7_2_4' := mk' (m := 1) (fun n (2:)^(n:))theorem declaration uses 'sorry'Series.example_7_2_4'a {N:} (hN: N 1) : example_7_2_4'.partial N = (2:)^(N+1) - 2 := N:hN:N 1example_7_2_4'.partial N = 2 ^ (N + 1) - 2 All goals completed! 🐙theorem declaration uses 'sorry'Series.example_7_2_4'b : example_7_2_4'.diverges := example_7_2_4'.diverges All goals completed! 🐙

Proposition 7.2.5 / Exercise 7.2.2

theorem declaration uses 'sorry'Series.converges_iff_tail_decay (s:Series) : s.converges ε > 0, N s.m, p N, q N, | n Finset.Icc p q, s.seq n| ε := s:Seriess.converges ε > 0, N s.m, p N, q N, | n Finset.Icc p q, s.seq n| ε All goals completed! 🐙

Corollary 7.2.6 (Zero test) / Exercise 7.2.3

theorem declaration uses 'sorry'Series.decay_of_converges {s:Series} (h: s.converges) : Filter.atTop.Tendsto s.seq (nhds 0) := s:Seriesh:s.convergesFilter.Tendsto s.seq Filter.atTop (nhds 0) All goals completed! 🐙
theorem declaration uses 'sorry'Series.diverges_of_nodecay {s:Series} (h: ¬ Filter.atTop.Tendsto s.seq (nhds 0)) : s.diverges := s:Seriesh:¬Filter.Tendsto s.seq Filter.atTop (nhds 0)s.diverges All goals completed! 🐙

Example 7.2.7

theorem declaration uses 'sorry'Series.example_7_2_7 : ((fun n: (1:)):Series).diverges := { m := 0, seq := fun n => if n 0 then (fun n => 1) n.toNat else 0, vanish := }.diverges ¬Filter.Tendsto { m := 0, seq := fun n => if n 0 then (fun n => 1) n.toNat else 0, vanish := }.seq Filter.atTop (nhds 0) All goals completed! 🐙
theorem declaration uses 'sorry'Series.example_7_2_7' : ((fun n: (-1:)^n):Series).diverges := { m := 0, seq := fun n => if n 0 then (fun n => (-1) ^ n) n.toNat else 0, vanish := }.diverges ¬Filter.Tendsto { m := 0, seq := fun n => if n 0 then (fun n => (-1) ^ n) n.toNat else 0, vanish := }.seq Filter.atTop (nhds 0) All goals completed! 🐙

Definition 7.2.8 (Absolute convergence)

abbrev Series.abs (s:Series) : Series := mk' (m:=s.m) (fun n |s.seq n|)
abbrev Series.absConverges (s:Series) : Prop := s.abs.convergesabbrev Series.condConverges (s:Series) : Prop := s.converges ¬ s.absConverges

Proposition 7.2.9 (Absolute convergence test) / Example 7.2.4

theorem declaration uses 'sorry'Series.converges_of_absConverges {s:Series} (h : s.absConverges) : s.converges := s:Seriesh:s.absConvergess.converges All goals completed! 🐙
theorem declaration uses 'sorry'Series.abs_le {s:Series} (h : s.absConverges) : |s.sum| s.abs.sum := s:Seriesh:s.absConverges|s.sum| s.abs.sum All goals completed! 🐙

Proposition 7.2.12 (Alternating series test)

theorem declaration uses 'sorry'Series.converges_of_alternating {m:} {a: { n // n m} } (ha: n, a n 0) (ha': Antitone a) : ((mk' (fun n (-1)^(n:) * a n)).converges Filter.atTop.Tendsto a (nhds 0)) := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) -- This proof is written to follow the structure of the original text. m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0)m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone aFilter.Tendsto a Filter.atTop (nhds 0) (mk' fun n => (-1) ^ n * a n).converges m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:(mk' fun n => (-1) ^ n * a n).convergesFilter.Tendsto a Filter.atTop (nhds 0); m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto (mk' fun n => (-1) ^ n * a n).seq Filter.atTop (nhds 0)Filter.Tendsto a Filter.atTop (nhds 0) m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto (fun b => dist ((mk' fun n => (-1) ^ n * a n).seq b) 0) Filter.atTop (nhds 0)Filter.Tendsto (fun b => dist (a b) 0) Filter.atTop (nhds 0) m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto (fun x => dist ((mk' fun n => (-1) ^ n * a n).seq x) 0) Filter.atTop (nhds 0)Filter.Tendsto (fun b => dist (a b) 0) Filter.atTop (nhds 0) m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto (fun x => dist ((mk' fun n => (-1) ^ n * a n).seq x) 0) Filter.atTop (nhds 0)e_1✝:{ n // n m } = (Set.Ici m)n:{ n // n m }dist (a n) 0 = dist ((mk' fun n => (-1) ^ n * a n).seq n) 0 All goals completed! 🐙 m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)(mk' fun n => (-1) ^ n * a n).converges m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0) L, Filter.Tendsto (mk' fun n => (-1) ^ n * a n).partial Filter.atTop (nhds L) m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 n L, Filter.Tendsto b.partial Filter.atTop (nhds L) m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481 L, Filter.Tendsto S Filter.atTop (nhds L) have claim0 {N:} (hN: N m) : S (N+1) = S N + (-1)^(N+1) * a N+1, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481N:hN:N mN + 1 m All goals completed! 🐙 := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481N:hN:N m(-1) ^ (N + 1) * a N + 1, = b.seq (N + 1)m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481N:hN:N mN b.m - 1; m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481N:hN:N mN b.m - 1; All goals completed! 🐙 have claim1 {N:} (hN: N m) : S (N+2) = S N + (-1)^(N+1) * (a N+1, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mN + 1 m All goals completed! 🐙 - a N+2, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mN + 2 m All goals completed! 🐙 ) := calc S (N+2) = S N + (-1)^(N+1) * a N+1, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mN + 1 m All goals completed! 🐙 + (-1)^(N+2) * a N+2, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mN + 2 m All goals completed! 🐙 := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mS (N + 2) = S N + (-1) ^ (N + 1) * a N + 1, + (-1) ^ (N + 2) * a N + 2, simp_rw [claim0 hN, show N+2=N+1+1 m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mS (N + 2) = S N + (-1) ^ (N + 1) * a N + 1, + (-1) ^ (N + 2) * a N + 2, All goals completed! 🐙]; m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mN + 1 m; All goals completed! 🐙 _ = S N + (-1)^(N+1) * a N+1, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mN + 1 m All goals completed! 🐙 + (-1) * (-1)^(N+1) * a N+2, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mN + 2 m All goals completed! 🐙 := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mS N + (-1) ^ (N + 1) * a N + 1, + (-1) ^ (N + 2) * a N + 2, = S N + (-1) ^ (N + 1) * a N + 1, + -1 * (-1) ^ (N + 1) * a N + 2, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N m(-1) ^ (N + 2) = -1 * (-1) ^ (N + 1); m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N m(-1) ^ (N + 2) = (-1) ^ (1 + (N + 1))m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N m-1 0 m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N m(-1) ^ (N + 2) = (-1) ^ (1 + (N + 1))m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N m-1 0 All goals completed! 🐙 _ = _ := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)N:hN:N mS N + (-1) ^ (N + 1) * a N + 1, + -1 * (-1) ^ (N + 1) * a N + 2, = S N + (-1) ^ (N + 1) * (a N + 1, - a N + 2, ) All goals completed! 🐙 have claim2 {N:} (hN: N m) (h': Odd N) : S (N+2) S N := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := fun {N} hN => @?_mvar.35044 N hNclaim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (@?_mvar.50451 N hN) (@?_mvar.50456 N hN)) (@?_mvar.50459 N hN)N:hN:N mh':Odd Na N + 2, a N + 1, ; m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := fun {N} hN => @?_mvar.35044 N hNclaim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (@?_mvar.50451 N hN) (@?_mvar.50456 N hN)) (@?_mvar.50459 N hN)N:hN:N mh':Odd NN + 1, N + 2, ; All goals completed! 🐙 have claim3 {N:} (hN: N m) (h': Even N) : S (N+2) S N := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := fun {N} hN => @?_mvar.35044 N hNclaim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (@?_mvar.50451 N hN) (@?_mvar.50456 N hN)) (@?_mvar.50459 N hN)claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.77836 N hN h'N:hN:N mh':Even Na N + 2, a N + 1, ; m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := fun {N} hN => @?_mvar.35044 N hNclaim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (@?_mvar.50451 N hN) (@?_mvar.50456 N hN)) (@?_mvar.50459 N hN)claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.77836 N hN h'N:hN:N mh':Even NN + 1, N + 2, ; All goals completed! 🐙 have why1 {N:} (hN: N m) (h': Even N) (k:) : S (N+2*k) S N := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) All goals completed! 🐙 have why2 {N:} (hN: N m) (h': Even N) (k:) : S (N+2*k+1) S N - a N+1, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)claim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (Eq.mpr (id (congrArg (fun x => @_fvar.32561 (N + 2) = x + (-1) ^ (N + 2) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Eq.symm (@_fvar.35045 N hN)))) (Eq.mpr (id (congr (congrArg (fun x => Eq (@_fvar.32561 x)) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this)) (congrArg (HAdd.hAdd (@_fvar.32561 (N + 1))) (congr (congrArg (fun x => HMul.hMul ((-1) ^ x)) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this)) (congrArg _fvar.27161 ((fun {α} {p} val val_1 e_val => Eq.rec (motive := fun val_2 e_val => (property : p val), val, property = val_2, e_val property) (fun property => Eq.refl val, property) e_val) (N + 2) (N + 1 + 1) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this) (Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))))) (@_fvar.35045 (N + 1) (le_of_not_gt fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2))) (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.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 2)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 2)))) (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2)) (Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))) (Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.27160) (Mathlib.Tactic.Ring.atom_pf N) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul N (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.27160 ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 2).rawCast (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.27160 ^ Nat.rawCast 1 * Nat.rawCast 1 + (N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf N) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1))) (Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1))) (Mathlib.Tactic.Ring.add_pf_add_overlap (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Eq.refl 2))) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.atom_pf _fvar.27160) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.27160 (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2) (Mathlib.Tactic.Ring.add_pf_add_gt (_fvar.27160 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 2)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 2)) (Eq.refl (Int.ofNat 0)))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.27160 (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_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero N (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0))))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 0))))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one) (Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 0)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2)) (Eq.refl false))) (Mathlib.Tactic.Linarith.sub_nonpos_of_le hN)) (Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a)))))))) ((fun {α β γ} [HAdd α β γ] a a_1 e_a => Eq.rec (motive := fun a_2 e_a => (a_3 a_4 : β), a_3 = a_4 a + a_3 = a_2 + a_4) (fun a_2 a_3 e_a => e_a Eq.refl (a + a_2)) e_a) (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Eq.refl (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) ((-1) ^ (N + 2) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (-1 * (-1) ^ (N + 1) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) ((fun {α β γ} [HMul α β γ] a a_1 e_a => Eq.rec (motive := fun a_2 e_a => (a_3 a_4 : β), a_3 = a_4 a * a_3 = a_2 * a_4) (fun a_2 a_3 e_a => e_a Eq.refl (a * a_2)) e_a) ((-1) ^ (N + 2)) (-1 * (-1) ^ (N + 1)) (Eq.mpr (id (congrArg (fun _a => (-1) ^ (N + 2) = _a) (Eq.symm (zpow_one_add₀ (Chapter7.Series.converges_of_alternating._proof_6 _fvar.35045 hN) (N + 1))))) (Chapter7.Series.converges_of_alternating._proof_5 _fvar.35045 hN)) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Eq.refl (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.32561 N)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one)) (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.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_right ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)) (Mathlib.Tactic.Ring.mul_zero (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))) (Mathlib.Tactic.Ring.zero_mul (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0)))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_add_lt (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.32561 N)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Int.negOfNat 1).rawCast))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))) (Mathlib.Tactic.Ring.add_pf_add_lt (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0)))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))))claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => Eq.mpr (id (Eq.trans (Eq.trans (congrArg (fun x => x @_fvar.32561 N) (Eq.trans (@_fvar.50460 N hN) (congrArg (HAdd.hAdd (@_fvar.32561 N)) (Eq.trans (congrArg (fun x => x * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) ((fun x_0 x_1 x_2 => (fun x_0 x_1 x_2 => Even.neg_one_zpow (Odd.add_one h')) x_0 x_1 x_2) CommGroupWithZero.toDivisionCommMonoid.toDivisionMonoid NonUnitalNonAssocRing.toHasDistribNeg)) (one_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)))))) ge_iff_le._simp_1) (Eq.trans (le_mul_iff_one_le_right'._simp_4 (@_fvar.32561 N)) one_le_div'._simp_4))) (@_fvar.27163 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN (of_eq_true (Eq.trans Subtype.mk_le_mk._simp_1 (Eq.trans (mul_le_mul_iff_left._simp_4 N) Nat.one_le_ofNat._simp_1))))claim3: {N : }, N _fvar.27160 Even N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => Eq.mpr (id (Eq.trans (Eq.trans (congrArg (fun x => x @_fvar.32561 N) (Eq.trans (@_fvar.50460 N hN) (congrArg (HAdd.hAdd (@_fvar.32561 N)) (Eq.trans (Eq.trans (congrArg (fun x => x * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) ((fun x_0 x_1 => (fun x_0 x_1 => Odd.neg_one_zpow (Even.add_one h')) x_0 x_1) Real.instDivisionRing)) (neg_mul 1 (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))) (Eq.trans (congrArg Neg.neg (one_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))) (neg_sub (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))))) (mul_le_iff_le_one_right'._simp_4 (@_fvar.32561 N))) (Eq.trans tsub_le_iff_right._simp_1 (congrArg (LE.le (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (zero_add (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)))))) (@_fvar.27163 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN (of_eq_true (Eq.trans Subtype.mk_le_mk._simp_1 (Eq.trans (mul_le_mul_iff_left._simp_4 N) Nat.one_le_ofNat._simp_1))))why1: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => sorryN:hN:N mh':Even Nk:N + 1 m All goals completed! 🐙 := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) All goals completed! 🐙 have why3 {N:} (hN: N m) (h': Even N) (k:) : S (N+2*k+1) S (N+2*k) := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) All goals completed! 🐙 have claim4 {N:} (hN: N m) (h': Even N) (k:) : S N - a N+1, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)claim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (Eq.mpr (id (congrArg (fun x => @_fvar.32561 (N + 2) = x + (-1) ^ (N + 2) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Eq.symm (@_fvar.35045 N hN)))) (Eq.mpr (id (congr (congrArg (fun x => Eq (@_fvar.32561 x)) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this)) (congrArg (HAdd.hAdd (@_fvar.32561 (N + 1))) (congr (congrArg (fun x => HMul.hMul ((-1) ^ x)) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this)) (congrArg _fvar.27161 ((fun {α} {p} val val_1 e_val => Eq.rec (motive := fun val_2 e_val => (property : p val), val, property = val_2, e_val property) (fun property => Eq.refl val, property) e_val) (N + 2) (N + 1 + 1) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this) (Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))))) (@_fvar.35045 (N + 1) (le_of_not_gt fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2))) (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.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 2)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 2)))) (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2)) (Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))) (Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.27160) (Mathlib.Tactic.Ring.atom_pf N) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul N (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.27160 ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 2).rawCast (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.27160 ^ Nat.rawCast 1 * Nat.rawCast 1 + (N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf N) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1))) (Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1))) (Mathlib.Tactic.Ring.add_pf_add_overlap (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Eq.refl 2))) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.atom_pf _fvar.27160) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.27160 (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2) (Mathlib.Tactic.Ring.add_pf_add_gt (_fvar.27160 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 2)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 2)) (Eq.refl (Int.ofNat 0)))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.27160 (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_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero N (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0))))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 0))))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one) (Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 0)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2)) (Eq.refl false))) (Mathlib.Tactic.Linarith.sub_nonpos_of_le hN)) (Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a)))))))) ((fun {α β γ} [HAdd α β γ] a a_1 e_a => Eq.rec (motive := fun a_2 e_a => (a_3 a_4 : β), a_3 = a_4 a + a_3 = a_2 + a_4) (fun a_2 a_3 e_a => e_a Eq.refl (a + a_2)) e_a) (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Eq.refl (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) ((-1) ^ (N + 2) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (-1 * (-1) ^ (N + 1) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) ((fun {α β γ} [HMul α β γ] a a_1 e_a => Eq.rec (motive := fun a_2 e_a => (a_3 a_4 : β), a_3 = a_4 a * a_3 = a_2 * a_4) (fun a_2 a_3 e_a => e_a Eq.refl (a * a_2)) e_a) ((-1) ^ (N + 2)) (-1 * (-1) ^ (N + 1)) (Eq.mpr (id (congrArg (fun _a => (-1) ^ (N + 2) = _a) (Eq.symm (zpow_one_add₀ (Chapter7.Series.converges_of_alternating._proof_6 _fvar.35045 hN) (N + 1))))) (Chapter7.Series.converges_of_alternating._proof_5 _fvar.35045 hN)) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Eq.refl (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.32561 N)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one)) (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.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_right ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)) (Mathlib.Tactic.Ring.mul_zero (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))) (Mathlib.Tactic.Ring.zero_mul (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0)))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_add_lt (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.32561 N)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Int.negOfNat 1).rawCast))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))) (Mathlib.Tactic.Ring.add_pf_add_lt (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0)))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))))claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => Eq.mpr (id (Eq.trans (Eq.trans (congrArg (fun x => x @_fvar.32561 N) (Eq.trans (@_fvar.50460 N hN) (congrArg (HAdd.hAdd (@_fvar.32561 N)) (Eq.trans (congrArg (fun x => x * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) ((fun x_0 x_1 x_2 => (fun x_0 x_1 x_2 => Even.neg_one_zpow (Odd.add_one h')) x_0 x_1 x_2) CommGroupWithZero.toDivisionCommMonoid.toDivisionMonoid NonUnitalNonAssocRing.toHasDistribNeg)) (one_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)))))) ge_iff_le._simp_1) (Eq.trans (le_mul_iff_one_le_right'._simp_4 (@_fvar.32561 N)) one_le_div'._simp_4))) (@_fvar.27163 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN (of_eq_true (Eq.trans Subtype.mk_le_mk._simp_1 (Eq.trans (mul_le_mul_iff_left._simp_4 N) Nat.one_le_ofNat._simp_1))))claim3: {N : }, N _fvar.27160 Even N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => Eq.mpr (id (Eq.trans (Eq.trans (congrArg (fun x => x @_fvar.32561 N) (Eq.trans (@_fvar.50460 N hN) (congrArg (HAdd.hAdd (@_fvar.32561 N)) (Eq.trans (Eq.trans (congrArg (fun x => x * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) ((fun x_0 x_1 => (fun x_0 x_1 => Odd.neg_one_zpow (Even.add_one h')) x_0 x_1) Real.instDivisionRing)) (neg_mul 1 (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))) (Eq.trans (congrArg Neg.neg (one_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))) (neg_sub (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))))) (mul_le_iff_le_one_right'._simp_4 (@_fvar.32561 N))) (Eq.trans tsub_le_iff_right._simp_1 (congrArg (LE.le (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (zero_add (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)))))) (@_fvar.27163 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN (of_eq_true (Eq.trans Subtype.mk_le_mk._simp_1 (Eq.trans (mul_le_mul_iff_left._simp_4 N) Nat.one_le_ofNat._simp_1))))why1: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => sorrywhy2: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 N - @_fvar.27161 N + 1, := fun {N} hN h' k => sorrywhy3: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) := fun {N} hN h' k => sorryN:hN:N mh':Even Nk:N + 1 m All goals completed! 🐙 S (N + 2*k + 1) S (N + 2*k + 1) S (N + 2*k) S (N + 2*k) S N := ge_iff_le.mp (why2 hN h' k), why3 hN h' k, why1 hN h' k have why4 {N n:} (hN: N m) (h': Even N) (hn: n N) : S N - a N+1, m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)claim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (Eq.mpr (id (congrArg (fun x => @_fvar.32561 (N + 2) = x + (-1) ^ (N + 2) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Eq.symm (@_fvar.35045 N hN)))) (Eq.mpr (id (congr (congrArg (fun x => Eq (@_fvar.32561 x)) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this)) (congrArg (HAdd.hAdd (@_fvar.32561 (N + 1))) (congr (congrArg (fun x => HMul.hMul ((-1) ^ x)) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this)) (congrArg _fvar.27161 ((fun {α} {p} val val_1 e_val => Eq.rec (motive := fun val_2 e_val => (property : p val), val, property = val_2, e_val property) (fun property => Eq.refl val, property) e_val) (N + 2) (N + 1 + 1) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this) (Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))))) (@_fvar.35045 (N + 1) (le_of_not_gt fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2))) (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.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 2)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 2)))) (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2)) (Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))) (Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.27160) (Mathlib.Tactic.Ring.atom_pf N) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul N (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.27160 ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 2).rawCast (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.27160 ^ Nat.rawCast 1 * Nat.rawCast 1 + (N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf N) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1))) (Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1))) (Mathlib.Tactic.Ring.add_pf_add_overlap (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Eq.refl 2))) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.atom_pf _fvar.27160) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.27160 (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2) (Mathlib.Tactic.Ring.add_pf_add_gt (_fvar.27160 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 2)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 2)) (Eq.refl (Int.ofNat 0)))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.27160 (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_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero N (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0))))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 0))))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one) (Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 0)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2)) (Eq.refl false))) (Mathlib.Tactic.Linarith.sub_nonpos_of_le hN)) (Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a)))))))) ((fun {α β γ} [HAdd α β γ] a a_1 e_a => Eq.rec (motive := fun a_2 e_a => (a_3 a_4 : β), a_3 = a_4 a + a_3 = a_2 + a_4) (fun a_2 a_3 e_a => e_a Eq.refl (a + a_2)) e_a) (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Eq.refl (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) ((-1) ^ (N + 2) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (-1 * (-1) ^ (N + 1) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) ((fun {α β γ} [HMul α β γ] a a_1 e_a => Eq.rec (motive := fun a_2 e_a => (a_3 a_4 : β), a_3 = a_4 a * a_3 = a_2 * a_4) (fun a_2 a_3 e_a => e_a Eq.refl (a * a_2)) e_a) ((-1) ^ (N + 2)) (-1 * (-1) ^ (N + 1)) (Eq.mpr (id (congrArg (fun _a => (-1) ^ (N + 2) = _a) (Eq.symm (zpow_one_add₀ (Chapter7.Series.converges_of_alternating._proof_6 _fvar.35045 hN) (N + 1))))) (Chapter7.Series.converges_of_alternating._proof_5 _fvar.35045 hN)) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Eq.refl (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.32561 N)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one)) (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.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_right ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)) (Mathlib.Tactic.Ring.mul_zero (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))) (Mathlib.Tactic.Ring.zero_mul (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0)))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_add_lt (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.32561 N)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Int.negOfNat 1).rawCast))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))) (Mathlib.Tactic.Ring.add_pf_add_lt (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0)))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))))claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => Eq.mpr (id (Eq.trans (Eq.trans (congrArg (fun x => x @_fvar.32561 N) (Eq.trans (@_fvar.50460 N hN) (congrArg (HAdd.hAdd (@_fvar.32561 N)) (Eq.trans (congrArg (fun x => x * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) ((fun x_0 x_1 x_2 => (fun x_0 x_1 x_2 => Even.neg_one_zpow (Odd.add_one h')) x_0 x_1 x_2) CommGroupWithZero.toDivisionCommMonoid.toDivisionMonoid NonUnitalNonAssocRing.toHasDistribNeg)) (one_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)))))) ge_iff_le._simp_1) (Eq.trans (le_mul_iff_one_le_right'._simp_4 (@_fvar.32561 N)) one_le_div'._simp_4))) (@_fvar.27163 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN (of_eq_true (Eq.trans Subtype.mk_le_mk._simp_1 (Eq.trans (mul_le_mul_iff_left._simp_4 N) Nat.one_le_ofNat._simp_1))))claim3: {N : }, N _fvar.27160 Even N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => Eq.mpr (id (Eq.trans (Eq.trans (congrArg (fun x => x @_fvar.32561 N) (Eq.trans (@_fvar.50460 N hN) (congrArg (HAdd.hAdd (@_fvar.32561 N)) (Eq.trans (Eq.trans (congrArg (fun x => x * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) ((fun x_0 x_1 => (fun x_0 x_1 => Odd.neg_one_zpow (Even.add_one h')) x_0 x_1) Real.instDivisionRing)) (neg_mul 1 (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))) (Eq.trans (congrArg Neg.neg (one_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))) (neg_sub (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))))) (mul_le_iff_le_one_right'._simp_4 (@_fvar.32561 N))) (Eq.trans tsub_le_iff_right._simp_1 (congrArg (LE.le (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (zero_add (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)))))) (@_fvar.27163 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN (of_eq_true (Eq.trans Subtype.mk_le_mk._simp_1 (Eq.trans (mul_le_mul_iff_left._simp_4 N) Nat.one_le_ofNat._simp_1))))why1: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => sorrywhy2: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 N - @_fvar.27161 N + 1, := fun {N} hN h' k => sorrywhy3: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) := fun {N} hN h' k => sorryclaim4: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => ge_iff_le.mp (@_fvar.102437 N hN h' k), @_fvar.102992 N hN h' k, @_fvar.91542 N hN h' kN:n:hN:N mh':Even Nhn:n NN + 1 m All goals completed! 🐙 S n S n S N := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) All goals completed! 🐙 have why5 {ε:} (: ε > 0) : N, n N, m N, |S n - S m| ε := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) All goals completed! 🐙 have : CauchySeq S := m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone a(mk' fun n => (-1) ^ n * a n).converges Filter.Tendsto a Filter.atTop (nhds 0) m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := fun {N} hN => @?_mvar.35044 N hNclaim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (@?_mvar.50451 N hN) (@?_mvar.50456 N hN)) (@?_mvar.50459 N hN)claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.77836 N hN h'claim3: {N : }, N _fvar.27160 Even N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.84573 N hN h'why1: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => @?_mvar.91541 N hN h' kwhy2: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 N - @_fvar.27161 N + 1, := fun {N} hN h' k => @?_mvar.102436 N hN h' kwhy3: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) := fun {N} hN h' k => @?_mvar.102991 N hN h' kclaim4: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => ge_iff_le.mp (@_fvar.102437 N hN h' k), @_fvar.102992 N hN h' k, @_fvar.91542 N hN h' kwhy4: {N n : } (hN : N _fvar.27160) (h' : Even N) (hn : n N), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 n @_fvar.32561 n @_fvar.32561 N := fun {N n} hN h' hn => @?_mvar.138094 N n hN h' hnwhy5: {ε : }, ε > 0 N, n N, m N, |@_fvar.32561 n - @_fvar.32561 m| ε := fun {ε} => @?_mvar.138638 ε ε > 0, N, n N, dist (S n) (S N) < ε m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := fun {N} hN => @?_mvar.35044 N hNclaim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (@?_mvar.50451 N hN) (@?_mvar.50456 N hN)) (@?_mvar.50459 N hN)claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.77836 N hN h'claim3: {N : }, N _fvar.27160 Even N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.84573 N hN h'why1: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => @?_mvar.91541 N hN h' kwhy2: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 N - @_fvar.27161 N + 1, := fun {N} hN h' k => @?_mvar.102436 N hN h' kwhy3: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) := fun {N} hN h' k => @?_mvar.102991 N hN h' kclaim4: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => ge_iff_le.mp (@_fvar.102437 N hN h' k), @_fvar.102992 N hN h' k, @_fvar.91542 N hN h' kwhy4: {N n : } (hN : N _fvar.27160) (h' : Even N) (hn : n N), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 n @_fvar.32561 n @_fvar.32561 N := fun {N n} hN h' hn => @?_mvar.138094 N n hN h' hnwhy5: {ε : }, ε > 0 N, n N, m N, |@_fvar.32561 n - @_fvar.32561 m| ε := fun {ε} => @?_mvar.138638 ε ε::ε > 0 N, n N, dist (S n) (S N) < ε; m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := fun {N} hN => @?_mvar.35044 N hNclaim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (@?_mvar.50451 N hN) (@?_mvar.50456 N hN)) (@?_mvar.50459 N hN)claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.77836 N hN h'claim3: {N : }, N _fvar.27160 Even N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.84573 N hN h'why1: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => @?_mvar.91541 N hN h' kwhy2: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 N - @_fvar.27161 N + 1, := fun {N} hN h' k => @?_mvar.102436 N hN h' kwhy3: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) := fun {N} hN h' k => @?_mvar.102991 N hN h' kclaim4: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => ge_iff_le.mp (@_fvar.102437 N hN h' k), @_fvar.102992 N hN h' k, @_fvar.91542 N hN h' kwhy4: {N n : } (hN : N _fvar.27160) (h' : Even N) (hn : n N), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 n @_fvar.32561 n @_fvar.32561 N := fun {N n} hN h' hn => @?_mvar.138094 N n hN h' hnwhy5: {ε : }, ε > 0 N, n N, m N, |@_fvar.32561 n - @_fvar.32561 m| ε := fun {ε} => @?_mvar.138638 ε ε::ε > 0N:hN: n N, m N, |S n - S m| ε / 2 N, n N, dist (S n) (S N) < ε; m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := fun {N} hN => @?_mvar.35044 N hNclaim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (@?_mvar.50451 N hN) (@?_mvar.50456 N hN)) (@?_mvar.50459 N hN)claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.77836 N hN h'claim3: {N : }, N _fvar.27160 Even N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.84573 N hN h'why1: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => @?_mvar.91541 N hN h' kwhy2: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 N - @_fvar.27161 N + 1, := fun {N} hN h' k => @?_mvar.102436 N hN h' kwhy3: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) := fun {N} hN h' k => @?_mvar.102991 N hN h' kclaim4: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => ge_iff_le.mp (@_fvar.102437 N hN h' k), @_fvar.102992 N hN h' k, @_fvar.91542 N hN h' kwhy4: {N n : } (hN : N _fvar.27160) (h' : Even N) (hn : n N), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 n @_fvar.32561 n @_fvar.32561 N := fun {N n} hN h' hn => @?_mvar.138094 N n hN h' hnwhy5: {ε : }, ε > 0 N, n N, m N, |@_fvar.32561 n - @_fvar.32561 m| ε := fun {ε} => @?_mvar.138638 ε ε::ε > 0N:hN: n N, m N, |S n - S m| ε / 2 n N, dist (S n) (S N) < ε m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := fun {N} hN => @?_mvar.35044 N hNclaim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (@?_mvar.50451 N hN) (@?_mvar.50456 N hN)) (@?_mvar.50459 N hN)claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.77836 N hN h'claim3: {N : }, N _fvar.27160 Even N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.84573 N hN h'why1: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => @?_mvar.91541 N hN h' kwhy2: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 N - @_fvar.27161 N + 1, := fun {N} hN h' k => @?_mvar.102436 N hN h' kwhy3: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) := fun {N} hN h' k => @?_mvar.102991 N hN h' kclaim4: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => ge_iff_le.mp (@_fvar.102437 N hN h' k), @_fvar.102992 N hN h' k, @_fvar.91542 N hN h' kwhy4: {N n : } (hN : N _fvar.27160) (h' : Even N) (hn : n N), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 n @_fvar.32561 n @_fvar.32561 N := fun {N n} hN h' hn => @?_mvar.138094 N n hN h' hnwhy5: {ε : }, ε > 0 N, n N, m N, |@_fvar.32561 n - @_fvar.32561 m| ε := fun {ε} => @?_mvar.138638 ε ε::ε > 0N:hN: n N, m N, |S n - S m| ε / 2n:hn:n Ndist (S n) (S N) < ε; m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := fun {N} hN => @?_mvar.35044 N hNclaim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (@?_mvar.50451 N hN) (@?_mvar.50456 N hN)) (@?_mvar.50459 N hN)claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.77836 N hN h'claim3: {N : }, N _fvar.27160 Even N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => @?_mvar.84573 N hN h'why1: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => @?_mvar.91541 N hN h' kwhy2: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 N - @_fvar.27161 N + 1, := fun {N} hN h' k => @?_mvar.102436 N hN h' kwhy3: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) := fun {N} hN h' k => @?_mvar.102991 N hN h' kclaim4: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => ge_iff_le.mp (@_fvar.102437 N hN h' k), @_fvar.102992 N hN h' k, @_fvar.91542 N hN h' kwhy4: {N n : } (hN : N _fvar.27160) (h' : Even N) (hn : n N), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 n @_fvar.32561 n @_fvar.32561 N := fun {N n} hN h' hn => @?_mvar.138094 N n hN h' hnwhy5: {ε : }, ε > 0 N, n N, m N, |@_fvar.32561 n - @_fvar.32561 m| ε := fun {ε} => @?_mvar.138638 ε ε::ε > 0N:hN: n N, m N, |S n - S m| ε / 2n:hn:n N|S n - S N| < ε; linarith [hN n hn N (m:a:{ n // n m } ha: (n : { n // n m }), a n 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Chapter7.Series := Chapter7.Series.mk' fun n => (-1) ^ n * @_fvar.27161 nS: := Chapter7.Series.partial _fvar.32481claim0: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 1) = @_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, := failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)claim1: {N : } (hN : N _fvar.27160), @_fvar.32561 (N + 2) = @_fvar.32561 N + (-1) ^ (N + 1) * (@_fvar.27161 N + 1, - @_fvar.27161 N + 2, ) := fun {N} hN => Trans.trans (Trans.trans (Eq.mpr (id (congrArg (fun x => @_fvar.32561 (N + 2) = x + (-1) ^ (N + 2) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Eq.symm (@_fvar.35045 N hN)))) (Eq.mpr (id (congr (congrArg (fun x => Eq (@_fvar.32561 x)) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this)) (congrArg (HAdd.hAdd (@_fvar.32561 (N + 1))) (congr (congrArg (fun x => HMul.hMul ((-1) ^ x)) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this)) (congrArg _fvar.27161 ((fun {α} {p} val val_1 e_val => Eq.rec (motive := fun val_2 e_val => (property : p val), val, property = val_2, e_val property) (fun property => Eq.refl val, property) e_val) (N + 2) (N + 1 + 1) (have this := Eq.trans (Mathlib.Tactic.Abel.subst_into_addg N 2 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 2 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 2) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 2 0) (Mathlib.Tactic.Abel.termg 1 2 0) (zero_add (Mathlib.Tactic.Abel.termg 1 2 0)))) (Eq.symm (Mathlib.Tactic.Abel.subst_into_addg (N + 1) 1 (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 2 1 0)) (Mathlib.Tactic.Abel.subst_into_addg N 1 (Mathlib.Tactic.Abel.termg 1 N 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 N (Mathlib.Tactic.Abel.termg 1 1 0)) (Mathlib.Tactic.Abel.term_atomg N) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N 0 (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (zero_add (Mathlib.Tactic.Abel.termg 1 1 0)))) (Mathlib.Tactic.Abel.term_atomg 1) (Mathlib.Tactic.Abel.term_add_constg 1 N (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 1 1 0) (Mathlib.Tactic.Abel.termg 2 1 0) (Mathlib.Tactic.Abel.term_add_termg 1 1 0 1 0 2 0 (Mathlib.Meta.NormNum.IsNat.to_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1)) (Eq.refl 2)) (Eq.refl 2)) (zero_add 0))))); this) (Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))))) (@_fvar.35045 (N + 1) (le_of_not_gt fun a => Mathlib.Tactic.Linarith.lt_irrefl (Eq.mp (congrArg (fun _a => _a < 0) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2))) (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.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 2)) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Eq.refl (Int.negOfNat 2)))) (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2)) (Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0))) (Mathlib.Tactic.Ring.zero_mul ((Int.negOfNat 1).rawCast + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((Int.negOfNat 2).rawCast + 0)))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf _fvar.27160) (Mathlib.Tactic.Ring.atom_pf N) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul N (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (_fvar.27160 ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_pf_add_lt (Int.negOfNat 2).rawCast (Mathlib.Tactic.Ring.add_pf_zero_add (_fvar.27160 ^ Nat.rawCast 1 * Nat.rawCast 1 + (N ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf N) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1))) (Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1))) (Mathlib.Tactic.Ring.add_pf_add_overlap (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Mathlib.Meta.NormNum.IsNat.of_raw 1) (Eq.refl 2))) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.atom_pf _fvar.27160) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul _fvar.27160 (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2) (Mathlib.Tactic.Ring.add_pf_add_gt (_fvar.27160 ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (N ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 2)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 2)) (Eq.refl (Int.ofNat 0)))) (Mathlib.Tactic.Ring.add_pf_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero _fvar.27160 (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_add_overlap_zero (Mathlib.Tactic.Ring.add_overlap_pf_zero N (Nat.rawCast 1) (Mathlib.Meta.NormNum.IsInt.to_isNat (Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.ofNat 0))))) (Mathlib.Tactic.Ring.add_pf_zero_add 0))))) (Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 0))))) (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.mul_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one) (Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 0)) (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 2)) (Eq.refl false))) (Mathlib.Tactic.Linarith.sub_nonpos_of_le hN)) (Mathlib.Tactic.Linarith.sub_nonpos_of_le (Int.add_one_le_iff.mpr a)))))))) ((fun {α β γ} [HAdd α β γ] a a_1 e_a => Eq.rec (motive := fun a_2 e_a => (a_3 a_4 : β), a_3 = a_4 a + a_3 = a_2 + a_4) (fun a_2 a_3 e_a => e_a Eq.refl (a + a_2)) e_a) (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Eq.refl (@_fvar.32561 N + (-1) ^ (N + 1) * @_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) ((-1) ^ (N + 2) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (-1 * (-1) ^ (N + 1) * @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) ((fun {α β γ} [HMul α β γ] a a_1 e_a => Eq.rec (motive := fun a_2 e_a => (a_3 a_4 : β), a_3 = a_4 a * a_3 = a_2 * a_4) (fun a_2 a_3 e_a => e_a Eq.refl (a * a_2)) e_a) ((-1) ^ (N + 2)) (-1 * (-1) ^ (N + 1)) (Eq.mpr (id (congrArg (fun _a => (-1) ^ (N + 2) = _a) (Eq.symm (zpow_one_add₀ (Chapter7.Series.converges_of_alternating._proof_6 _fvar.35045 hN) (N + 1))))) (Chapter7.Series.converges_of_alternating._proof_5 _fvar.35045 hN)) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Eq.refl (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.32561 N)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + 0)))) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.neg_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one)) (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.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_right ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)) (Mathlib.Tactic.Ring.mul_zero (Int.negOfNat 1).rawCast) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))) (Mathlib.Tactic.Ring.zero_mul (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0)))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_add_lt (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.32561 N)) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ((-1) ^ (N + 1))) (Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)) (Mathlib.Tactic.Ring.atom_pf (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (Mathlib.Tactic.Ring.sub_pf (Mathlib.Tactic.Ring.neg_add (Mathlib.Tactic.Ring.neg_mul (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.neg_one_mul (Mathlib.Meta.NormNum.IsInt.to_raw_eq (Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul) (Mathlib.Meta.NormNum.IsInt.of_raw (Int.negOfNat 1)) (Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw 1)) (Eq.refl (Int.negOfNat 1)))))) Mathlib.Tactic.Ring.neg_zero) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left ((-1) ^ (N + 1)) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN) (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Int.negOfNat 1).rawCast))) (Mathlib.Tactic.Ring.mul_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))) (Mathlib.Tactic.Ring.add_pf_add_lt (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0)))) (Mathlib.Tactic.Ring.zero_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1 + (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0))) (Mathlib.Tactic.Ring.add_pf_add_zero (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))) (Mathlib.Tactic.Ring.add_pf_add_lt (@_fvar.32561 N ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_zero_add (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN ^ Nat.rawCast 1 * Nat.rawCast 1) + (((-1) ^ (N + 1)) ^ Nat.rawCast 1 * (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast) + 0))))))claim2: {N : }, N _fvar.27160 Odd N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => Eq.mpr (id (Eq.trans (Eq.trans (congrArg (fun x => x @_fvar.32561 N) (Eq.trans (@_fvar.50460 N hN) (congrArg (HAdd.hAdd (@_fvar.32561 N)) (Eq.trans (congrArg (fun x => x * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) ((fun x_0 x_1 x_2 => (fun x_0 x_1 x_2 => Even.neg_one_zpow (Odd.add_one h')) x_0 x_1 x_2) CommGroupWithZero.toDivisionCommMonoid.toDivisionMonoid NonUnitalNonAssocRing.toHasDistribNeg)) (one_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)))))) ge_iff_le._simp_1) (Eq.trans (le_mul_iff_one_le_right'._simp_4 (@_fvar.32561 N)) one_le_div'._simp_4))) (@_fvar.27163 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN (of_eq_true (Eq.trans Subtype.mk_le_mk._simp_1 (Eq.trans (mul_le_mul_iff_left._simp_4 N) Nat.one_le_ofNat._simp_1))))claim3: {N : }, N _fvar.27160 Even N @_fvar.32561 (N + 2) @_fvar.32561 N := fun {N} hN h' => Eq.mpr (id (Eq.trans (Eq.trans (congrArg (fun x => x @_fvar.32561 N) (Eq.trans (@_fvar.50460 N hN) (congrArg (HAdd.hAdd (@_fvar.32561 N)) (Eq.trans (Eq.trans (congrArg (fun x => x * (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) ((fun x_0 x_1 => (fun x_0 x_1 => Odd.neg_one_zpow (Even.add_one h')) x_0 x_1) Real.instDivisionRing)) (neg_mul 1 (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))) (Eq.trans (congrArg Neg.neg (one_mul (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN - @_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))) (neg_sub (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN) (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN))))))) (mul_le_iff_le_one_right'._simp_4 (@_fvar.32561 N))) (Eq.trans tsub_le_iff_right._simp_1 (congrArg (LE.le (@_fvar.27161 N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN)) (zero_add (@_fvar.27161 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN)))))) (@_fvar.27163 N + 1, Chapter7.Series.converges_of_alternating._proof_3 _fvar.35045 hN N + 2, Chapter7.Series.converges_of_alternating._proof_4 _fvar.35045 hN (of_eq_true (Eq.trans Subtype.mk_le_mk._simp_1 (Eq.trans (mul_le_mul_iff_left._simp_4 N) Nat.one_le_ofNat._simp_1))))why1: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => sorrywhy2: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 N - @_fvar.27161 N + 1, := fun {N} hN h' k => sorrywhy3: {N : }, N _fvar.27160 Even N (k : ), @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) := fun {N} hN h' k => sorryclaim4: {N : } (hN : N _fvar.27160) (h' : Even N) (k : ), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k + 1) @_fvar.32561 (N + 2 * k) @_fvar.32561 (N + 2 * k) @_fvar.32561 N := fun {N} hN h' k => ge_iff_le.mp (@_fvar.102437 N hN h' k), @_fvar.102992 N hN h' k, @_fvar.91542 N hN h' kwhy4: {N n : } (hN : N _fvar.27160) (h' : Even N) (hn : n N), @_fvar.32561 N - @_fvar.27161 N + 1, @_fvar.32561 n @_fvar.32561 n @_fvar.32561 N := fun {N n} hN h' hn => sorrywhy5: {ε : }, ε > 0 N, n N, m N, |@_fvar.32561 n - @_fvar.32561 m| ε := fun {ε} => sorryε::ε > 0N:hN: n N, m N, |S n - S m| ε / 2n:hn:n NN N All goals completed! 🐙)] All goals completed! 🐙

Example 7.2.13

noncomputable abbrev Series.example_7_2_13 : Series := (mk' (m:=1) (fun n (-1:)^(n:) / (n:)))
theorem declaration uses 'sorry'Series.example_7_2_13a : example_7_2_13.converges := example_7_2_13.converges All goals completed! 🐙theorem declaration uses 'sorry'Series.example_7_2_13b : ¬ example_7_2_13.absConverges := ¬example_7_2_13.absConverges All goals completed! 🐙theorem declaration uses 'sorry'Series.example_7_2_13c : example_7_2_13.condConverges := example_7_2_13.condConverges All goals completed! 🐙instance Series.inst_add : Add Series where add a b := { m := max a.m b.m seq n := if n max a.m b.m then a.seq n + b.seq n else 0 vanish n hn := a:Seriesb:Seriesn:hn:n < max a.m b.m(if n max a.m b.m then a.seq n + b.seq n else 0) = 0 a:Seriesb:Seriesn:hn:¬max a.m b.m n(if n max a.m b.m then a.seq n + b.seq n else 0) = 0; All goals completed! 🐙 }theorem Series.add_coe (a b: ) : (a:Series) + (b:Series) = (fun n a n + b n) := a: b: { m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } + { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := } = { m := 0, seq := fun n => if n 0 then (fun n => a n + b n) n.toNat else 0, vanish := } a: b: ({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } + { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).m = { m := 0, seq := fun n => if n 0 then (fun n => a n + b n) n.toNat else 0, vanish := }.ma: b: n:({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } + { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n + b n) n.toNat else 0, vanish := }.seq n; a: b: n:({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } + { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n + b n) n.toNat else 0, vanish := }.seq n a: b: n:h:n 0({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } + { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n + b n) n.toNat else 0, vanish := }.seq na: b: n:h:¬n 0({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } + { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n + b n) n.toNat else 0, vanish := }.seq n a: b: n:h:n 0({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } + { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n + b n) n.toNat else 0, vanish := }.seq na: b: n:h:¬n 0({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } + { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n + b n) n.toNat else 0, vanish := }.seq n All goals completed! 🐙

Proposition 7.2.14 (a) (Series laws) / Exercise 7.2.5. The Unknown identifier `convergesTo`convergesTo form can be more convenient for applications.

theorem declaration uses 'sorry'Series.convergesTo.add {s t:Series} {L M: } (hs: s.convergesTo L) (ht: t.convergesTo M) : (s + t).convergesTo (L + M) := s:Seriest:SeriesL:M:hs:s.convergesTo Lht:t.convergesTo M(s + t).convergesTo (L + M) All goals completed! 🐙
theorem declaration uses 'sorry'Series.add {s t:Series} (hs: s.converges) (ht: t.converges) : (s + t).converges (s+t).sum = s.sum + t.sum := s:Seriest:Serieshs:s.convergesht:t.converges(s + t).converges (s + t).sum = s.sum + t.sum All goals completed! 🐙instance Series.inst.smul : SMul Series where smul c s := { m := s.m seq n := if n s.m then c * s.seq n else 0 vanish := c:s:Series n < s.m, (if n s.m then c * s.seq n else 0) = 0 All goals completed! 🐙 }theorem Series.smul_coe (a: ) (c: ) : (c a:Series) = (fun n c * a n) := a: c:c { m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } = { m := 0, seq := fun n => if n 0 then (fun n => c * a n) n.toNat else 0, vanish := } a: c:(c { m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := }).m = { m := 0, seq := fun n => if n 0 then (fun n => c * a n) n.toNat else 0, vanish := }.ma: c:n:(c { m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => c * a n) n.toNat else 0, vanish := }.seq n; a: c:n:(c { m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => c * a n) n.toNat else 0, vanish := }.seq n a: c:n:h:n 0(c { m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => c * a n) n.toNat else 0, vanish := }.seq na: c:n:h:¬n 0(c { m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => c * a n) n.toNat else 0, vanish := }.seq n a: c:n:h:n 0(c { m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => c * a n) n.toNat else 0, vanish := }.seq na: c:n:h:¬n 0(c { m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => c * a n) n.toNat else 0, vanish := }.seq n All goals completed! 🐙

Proposition 7.2.14 (b) (Series laws) / Exercise 7.2.5. The Unknown identifier `convergesTo`convergesTo form can be more convenient for applications.

theorem declaration uses 'sorry'Series.convergesTo.smul {s:Series} {L c: } (hs: s.convergesTo L) : (c s).convergesTo (c * L) := s:SeriesL:c:hs:s.convergesTo L(c s).convergesTo (c * L) All goals completed! 🐙
theorem declaration uses 'sorry'Series.smul {c:} {s:Series} (hs: s.converges) : (c s).converges (c s).sum = c * s.sum := c:s:Serieshs:s.converges(c s).converges (c s).sum = c * s.sum All goals completed! 🐙

The corresponding API for subtraction was not in the textbook, but is useful in later sections, so is included here.

instance Series.inst_sub : Sub Series where sub a b := { m := max a.m b.m seq n := if n max a.m b.m then a.seq n - b.seq n else 0 vanish := a:Seriesb:Series n < max a.m b.m, (if n max a.m b.m then a.seq n - b.seq n else 0) = 0 All goals completed! 🐙 }
theorem Series.sub_coe (a b: ) : (a:Series) - (b:Series) = (fun n a n - b n) := a: b: { m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } - { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := } = { m := 0, seq := fun n => if n 0 then (fun n => a n - b n) n.toNat else 0, vanish := } a: b: ({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } - { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).m = { m := 0, seq := fun n => if n 0 then (fun n => a n - b n) n.toNat else 0, vanish := }.ma: b: n:({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } - { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n - b n) n.toNat else 0, vanish := }.seq n; a: b: n:({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } - { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n - b n) n.toNat else 0, vanish := }.seq n a: b: n:h:n 0({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } - { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n - b n) n.toNat else 0, vanish := }.seq na: b: n:h:¬n 0({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } - { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n - b n) n.toNat else 0, vanish := }.seq n a: b: n:h:n 0({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } - { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n - b n) n.toNat else 0, vanish := }.seq na: b: n:h:¬n 0({ m := 0, seq := fun n => if n 0 then a n.toNat else 0, vanish := } - { m := 0, seq := fun n => if n 0 then b n.toNat else 0, vanish := }).seq n = { m := 0, seq := fun n => if n 0 then (fun n => a n - b n) n.toNat else 0, vanish := }.seq n All goals completed! 🐙theorem declaration uses 'sorry'Series.convergesTo.sub {s t:Series} {L M: } (hs: s.convergesTo L) (ht: t.convergesTo M) : (s - t).convergesTo (L - M) := s:Seriest:SeriesL:M:hs:s.convergesTo Lht:t.convergesTo M(s - t).convergesTo (L - M) All goals completed! 🐙theorem declaration uses 'sorry'Series.sub {s t:Series} (hs: s.converges) (ht: t.converges) : (s - t).converges (s-t).sum = s.sum - t.sum := s:Seriest:Serieshs:s.convergesht:t.converges(s - t).converges (s - t).sum = s.sum - t.sum All goals completed! 🐙abbrev Series.from (s:Series) (m₁:) : Series := mk' (m := max s.m m₁) (fun n s.seq (n:))

Proposition 7.2.14 (c) (Series laws) / Exercise 7.2.5

theorem declaration uses 'sorry'Series.converges_from (s:Series) (k:) : s.converges (s.from (s.m+k)).converges := s:Seriesk:s.converges (s.from (s.m + k)).converges All goals completed! 🐙
theorem declaration uses 'sorry'Series.sum_from {s:Series} (k:) (h: s.converges) : s.sum = n Finset.Ico s.m (s.m+k), s.seq n + (s.from (s.m+k)).sum := s:Seriesk:h:s.convergess.sum = n Finset.Ico s.m (s.m + k), s.seq n + (s.from (s.m + k)).sum All goals completed! 🐙

Proposition 7.2.14 (d) (Series laws) / Exercise 7.2.5

theorem declaration uses 'sorry'Series.shift {s:Series} {x:} (h: s.convergesTo x) (L:) : (mk' (m := s.m + L) (fun n s.seq (n - L))).convergesTo x := s:Seriesx:h:s.convergesTo xL:(mk' fun n => s.seq (n - L)).convergesTo x All goals completed! 🐙

Lemma 7.2.15 (telescoping series) / Exercise 7.2.6

theorem declaration uses 'sorry'Series.telescope {a: } (ha: Filter.atTop.Tendsto a (nhds 0)) : ((fun n: a (n+1) - a n):Series).convergesTo (a 0) := a: ha:Filter.Tendsto a Filter.atTop (nhds 0){ m := 0, seq := fun n => if n 0 then (fun n => a (n + 1) - a n) n.toNat else 0, vanish := }.convergesTo (a 0) All goals completed! 🐙
/- Exercise 7.2.1 -/ def declaration uses 'sorry'Series.exercise_7_2_1_convergent : Decidable ((mk' (m := 1) (fun n (-1:)^(n:))).converges ) := Decidable (mk' fun n => (-1) ^ n).converges -- The first line of this proof should be `apply isTrue` or `apply isFalse`. All goals completed! 🐙end Chapter7