Аналіз I, Глава 7.2
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:
-
Formal series and their limits
-
Absolute convergence; basic series laws.
namespace Chapter7
open BigOperators
Визначення 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 := fun n ↦ if n ≥ 0 then a n.toNat else 0
vanish := a:ℕ → ℝ⊢ ∀ n < 0, (if n ≥ 0 then a n.toNat else 0) = 0
a:ℕ → ℝn:ℤhn: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 := fun 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
m:ℤa:{ n // n ≥ m } → ℝn:ℤhn: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! 🐙
Визначення 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 - 1⊢ s.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
have : N+1 ∉ Finset.Icc s.m N := s:SeriesN:ℤh:N ≥ s.m - 1⊢ s.partial (N + 1) = s.partial N + s.seq (N + 1) All goals completed! 🐙
s:SeriesN:ℤh:N ≥ s.m - 1this:N + 1 ∉ Finset.Icc s.m N⊢ Finset.Icc s.m (N + 1) = insert (N + 1) (Finset.Icc s.m N)
s:SeriesN:ℤh:N ≥ s.m - 1this:N + 1 ∉ Finset.Icc s.m N⊢ s.m ≤ N + 1
All goals completed! 🐙
abbrev Series.convergesTo (s : Series) (L:ℝ) : Prop :=
Filter.Tendsto (s.partial) Filter.atTop (nhds L)
abbrev Series.converges (s : Series) : Prop := ∃ L, s.convergesTo L
abbrev Series.diverges (s : Series) : Prop := ¬s.converges
open Classical in
noncomputable abbrev Series.sum (s : Series) : ℝ :=
if h : s.converges then h.choose else 0
theorem Series.converges_of_convergesTo {s : Series} {L:ℝ} (h: s.convergesTo L) :
s.converges := s:SeriesL:ℝh:s.convergesTo L⊢ s.converges All goals completed! 🐙
Ремарка 7.2.3
theorem Series.sum_of_converges {s : Series} {L:ℝ} (h: s.convergesTo L) : s.sum = L := s:SeriesL:ℝh:s.convergesTo L⊢ s.sum = L
s:SeriesL:ℝh:s.convergesTo L⊢ Exists.choose ⋯ = L
All goals completed! 🐙
theorem Series.convergesTo_sum {s : Series} (h: s.converges) : s.convergesTo s.sum := s:Seriesh:s.converges⊢ s.convergesTo s.sum
s:Seriesh:s.converges⊢ s.convergesTo (Exists.choose ⋯)
All goals completed! 🐙
theorem Series.example_7_2_4a {N:ℤ} (hN: N ≥ 1) : example_7_2_4.partial N = 1 - (2:ℝ)^(-N) := N:ℤhN:N ≥ 1⊢ example_7_2_4.partial N = 1 - 2 ^ (-N)
All goals completed! 🐙
theorem Series.example_7_2_4b : example_7_2_4.convergesTo 1 := ⊢ example_7_2_4.convergesTo 1 All goals completed! 🐙
theorem 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 Series.example_7_2_4'a {N:ℤ} (hN: N ≥ 1) : example_7_2_4'.partial N = (2:ℝ)^(N+1) - 2 := N:ℤhN:N ≥ 1⊢ example_7_2_4'.partial N = 2 ^ (N + 1) - 2
All goals completed! 🐙
theorem Series.example_7_2_4'b : example_7_2_4'.diverges := ⊢ example_7_2_4'.diverges All goals completed! 🐙
Твердження 7.2.5 / Вправа 7.2.2
theorem 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:Series⊢ s.converges ↔ ∀ ε > 0, ∃ N ≥ s.m, ∀ p ≥ N, ∀ q ≥ N, |∑ n ∈ Finset.Icc p q, s.seq n| ≤ ε
All goals completed! 🐙
Наслідок 7.2.6 (Zero test) / Вправа 7.2.3
theorem Series.decay_of_converges {s:Series} (h: s.converges) :
Filter.Tendsto s.seq Filter.atTop (nhds 0) := s:Seriesh:s.converges⊢ Filter.Tendsto s.seq Filter.atTop (nhds 0)
All goals completed! 🐙
theorem Series.diverges_of_nodecay {s:Series} (h: ¬ Filter.Tendsto s.seq Filter.atTop (nhds 0)) :
s.diverges := s:Seriesh:¬Filter.Tendsto s.seq Filter.atTop (nhds 0)⊢ s.diverges
All goals completed! 🐙
Приклад 7.2.7
theorem 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 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! 🐙
Визначення 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.converges
abbrev Series.condConverges (s:Series) : Prop := s.converges ∧ ¬ s.absConverges
Твердження 7.2.9 (Absolute convergence test) / Example 7.2.4
theorem Series.converges_of_absConverges {s:Series} (h : s.absConverges) : s.converges := s:Seriesh:s.absConverges⊢ s.converges
All goals completed! 🐙
theorem 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! 🐙
Твердження 7.2.12 (Alternating series test)
theorem 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.Tendsto a Filter.atTop (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)
-- цей доказ написан так, щоб співпадати із структурою орігінального тексту.
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 a⊢ 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 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).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 (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)heq:{ 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:Series := mk' fun n => (-1) ^ ↑n * a 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partial⊢ ∃ 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialN:ℤhN:N ≥ m⊢ 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)
have h1 : N+1 ≥ 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! 🐙
m:ℤa:{ n // n ≥ m } → ℝha:∀ (n : { n // n ≥ m }), a n ≥ 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialN:ℤhN:N ≥ mh1:N + 1 ≥ 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialN:ℤhN:N ≥ mh1:N + 1 ≥ m⊢ N ≥ 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialN:ℤhN:N ≥ mh1:N + 1 ≥ m⊢ N ≥ 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ N + 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ N + 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ N + 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ N + 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ S (N + 2) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩ + (-1) ^ (N + 2) * a ⟨N + 2, ⋯⟩
have hN2 : 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ S (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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ mhN2:N + 2 = N + 1 + 1⊢ S (N + 1 + 1) = S (N + 1) + (-1) ^ (N + 1 + 1) * a ⟨N + 1 + 1, ⋯⟩
exact claim0 (show N+1 ≥ m m:ℤa:{ n // n ≥ m } → ℝha:∀ (n : { n // n ≥ m }), a n ≥ 0ha':Antitone ah:Filter.Tendsto a Filter.atTop (nhds 0)b:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ S (N + 2) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩ + (-1) ^ (N + 2) * a ⟨N + 2, ⋯⟩ 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ N + 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ N + 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ S 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ N + 2 = 1 + (N + 1); 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩N:ℤhN:N ≥ m⊢ S 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)N:ℤhN:N ≥ mh':Odd N⊢ S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩) ≥ 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)N:ℤhN:N ≥ mh':Odd N⊢ a ⟨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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)N:ℤhN:N ≥ mh':Odd N⊢ ⟨N + 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S NN:ℤhN:N ≥ mh':Even N⊢ S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩) ≤ 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S NN:ℤhN:N ≥ mh':Even N⊢ a ⟨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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S NN:ℤhN:N ≥ mh':Even N⊢ ⟨N + 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S Nclaim3:∀ {N : ℤ}, N ≥ m → Even N → S (N + 2) ≤ S Nwhy1:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k) ≤ S NN:ℤ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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S Nclaim3:∀ {N : ℤ}, N ≥ m → Even N → S (N + 2) ≤ S Nwhy1:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k) ≤ S Nwhy2:∀ {N : ℤ} (hN : N ≥ m), Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≥ S N - a ⟨N + 1, ⋯⟩why3:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k)N:ℤ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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S Nclaim3:∀ {N : ℤ}, N ≥ m → Even N → S (N + 2) ≤ S Nwhy1:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k) ≤ S Nwhy2:∀ {N : ℤ} (hN : N ≥ m), Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≥ S N - a ⟨N + 1, ⋯⟩why3:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k)claim4:∀ {N : ℤ} (hN : N ≥ m),
Even N →
∀ (k : ℕ), S N - a ⟨N + 1, ⋯⟩ ≤ S (N + 2 * ↑k + 1) ∧ S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k) ∧ S (N + 2 * ↑k) ≤ S NN:ℤn:ℤhN:N ≥ mh':Even Nhn:n ≥ N⊢ N + 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 {ε:ℝ} (hε: ε > 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S Nclaim3:∀ {N : ℤ}, N ≥ m → Even N → S (N + 2) ≤ S Nwhy1:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k) ≤ S Nwhy2:∀ {N : ℤ} (hN : N ≥ m), Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≥ S N - a ⟨N + 1, ⋯⟩why3:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k)claim4:∀ {N : ℤ} (hN : N ≥ m),
Even N →
∀ (k : ℕ), S N - a ⟨N + 1, ⋯⟩ ≤ S (N + 2 * ↑k + 1) ∧ S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k) ∧ S (N + 2 * ↑k) ≤ S Nwhy4:∀ {N n : ℤ} (hN : N ≥ m), Even N → n ≥ N → S N - a ⟨N + 1, ⋯⟩ ≤ S n ∧ S n ≤ S Nwhy5:∀ {ε : ℝ}, ε > 0 → ∃ N, ∀ n ≥ N, ∀ m ≥ N, |S n - S m| ≤ ε⊢ ∀ ε > 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S Nclaim3:∀ {N : ℤ}, N ≥ m → Even N → S (N + 2) ≤ S Nwhy1:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k) ≤ S Nwhy2:∀ {N : ℤ} (hN : N ≥ m), Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≥ S N - a ⟨N + 1, ⋯⟩why3:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k)claim4:∀ {N : ℤ} (hN : N ≥ m),
Even N →
∀ (k : ℕ), S N - a ⟨N + 1, ⋯⟩ ≤ S (N + 2 * ↑k + 1) ∧ S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k) ∧ S (N + 2 * ↑k) ≤ S Nwhy4:∀ {N n : ℤ} (hN : N ≥ m), Even N → n ≥ N → S N - a ⟨N + 1, ⋯⟩ ≤ S n ∧ S n ≤ S Nwhy5:∀ {ε : ℝ}, ε > 0 → ∃ N, ∀ n ≥ N, ∀ m ≥ N, |S n - S m| ≤ εε:ℝhε:ε > 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S Nclaim3:∀ {N : ℤ}, N ≥ m → Even N → S (N + 2) ≤ S Nwhy1:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k) ≤ S Nwhy2:∀ {N : ℤ} (hN : N ≥ m), Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≥ S N - a ⟨N + 1, ⋯⟩why3:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k)claim4:∀ {N : ℤ} (hN : N ≥ m),
Even N →
∀ (k : ℕ), S N - a ⟨N + 1, ⋯⟩ ≤ S (N + 2 * ↑k + 1) ∧ S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k) ∧ S (N + 2 * ↑k) ≤ S Nwhy4:∀ {N n : ℤ} (hN : N ≥ m), Even N → n ≥ N → S N - a ⟨N + 1, ⋯⟩ ≤ S n ∧ S n ≤ S Nwhy5:∀ {ε : ℝ}, ε > 0 → ∃ N, ∀ n ≥ N, ∀ m ≥ N, |S n - S m| ≤ εε:ℝhε:ε > 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S Nclaim3:∀ {N : ℤ}, N ≥ m → Even N → S (N + 2) ≤ S Nwhy1:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k) ≤ S Nwhy2:∀ {N : ℤ} (hN : N ≥ m), Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≥ S N - a ⟨N + 1, ⋯⟩why3:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k)claim4:∀ {N : ℤ} (hN : N ≥ m),
Even N →
∀ (k : ℕ), S N - a ⟨N + 1, ⋯⟩ ≤ S (N + 2 * ↑k + 1) ∧ S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k) ∧ S (N + 2 * ↑k) ≤ S Nwhy4:∀ {N n : ℤ} (hN : N ≥ m), Even N → n ≥ N → S N - a ⟨N + 1, ⋯⟩ ≤ S n ∧ S n ≤ S Nwhy5:∀ {ε : ℝ}, ε > 0 → ∃ N, ∀ n ≥ N, ∀ m ≥ N, |S n - S m| ≤ εε:ℝhε:ε > 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S Nclaim3:∀ {N : ℤ}, N ≥ m → Even N → S (N + 2) ≤ S Nwhy1:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k) ≤ S Nwhy2:∀ {N : ℤ} (hN : N ≥ m), Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≥ S N - a ⟨N + 1, ⋯⟩why3:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k)claim4:∀ {N : ℤ} (hN : N ≥ m),
Even N →
∀ (k : ℕ), S N - a ⟨N + 1, ⋯⟩ ≤ S (N + 2 * ↑k + 1) ∧ S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k) ∧ S (N + 2 * ↑k) ≤ S Nwhy4:∀ {N n : ℤ} (hN : N ≥ m), Even N → n ≥ N → S N - a ⟨N + 1, ⋯⟩ ≤ S n ∧ S n ≤ S Nwhy5:∀ {ε : ℝ}, ε > 0 → ∃ N, ∀ n ≥ N, ∀ m ≥ N, |S n - S m| ≤ εε:ℝhε:ε > 0N:ℤhN:∀ n ≥ N, ∀ m ≥ N, |S n - S m| ≤ ε / 2n:ℤhn: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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S Nclaim3:∀ {N : ℤ}, N ≥ m → Even N → S (N + 2) ≤ S Nwhy1:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k) ≤ S Nwhy2:∀ {N : ℤ} (hN : N ≥ m), Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≥ S N - a ⟨N + 1, ⋯⟩why3:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k)claim4:∀ {N : ℤ} (hN : N ≥ m),
Even N →
∀ (k : ℕ), S N - a ⟨N + 1, ⋯⟩ ≤ S (N + 2 * ↑k + 1) ∧ S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k) ∧ S (N + 2 * ↑k) ≤ S Nwhy4:∀ {N n : ℤ} (hN : N ≥ m), Even N → n ≥ N → S N - a ⟨N + 1, ⋯⟩ ≤ S n ∧ S n ≤ S Nwhy5:∀ {ε : ℝ}, ε > 0 → ∃ N, ∀ n ≥ N, ∀ m ≥ N, |S n - S m| ≤ εε:ℝhε:ε > 0N:ℤn:ℤhn:n ≥ NhN:|S n - S N| ≤ ε / 2⊢ 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:Series := mk' fun n => (-1) ^ ↑n * a nS:ℤ → ℝ := b.partialclaim0:∀ {N : ℤ} (hN : N ≥ m), S (N + 1) = S N + (-1) ^ (N + 1) * a ⟨N + 1, ⋯⟩claim1:∀ {N : ℤ} (hN : N ≥ m), S (N + 2) = S N + (-1) ^ (N + 1) * (a ⟨N + 1, ⋯⟩ - a ⟨N + 2, ⋯⟩)claim2:∀ {N : ℤ}, N ≥ m → Odd N → S (N + 2) ≥ S Nclaim3:∀ {N : ℤ}, N ≥ m → Even N → S (N + 2) ≤ S Nwhy1:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k) ≤ S Nwhy2:∀ {N : ℤ} (hN : N ≥ m), Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≥ S N - a ⟨N + 1, ⋯⟩why3:∀ {N : ℤ}, N ≥ m → Even N → ∀ (k : ℕ), S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k)claim4:∀ {N : ℤ} (hN : N ≥ m),
Even N →
∀ (k : ℕ), S N - a ⟨N + 1, ⋯⟩ ≤ S (N + 2 * ↑k + 1) ∧ S (N + 2 * ↑k + 1) ≤ S (N + 2 * ↑k) ∧ S (N + 2 * ↑k) ≤ S Nwhy4:∀ {N n : ℤ} (hN : N ≥ m), Even N → n ≥ N → S N - a ⟨N + 1, ⋯⟩ ≤ S n ∧ S n ≤ S Nwhy5:∀ {ε : ℝ}, ε > 0 → ∃ N, ∀ n ≥ N, ∀ m ≥ N, |S n - S m| ≤ εε:ℝhε:ε > 0N:ℤn:ℤhn:n ≥ NhN:|S n - S N| ≤ ε / 2⊢ |S n - S N| < ε; All goals completed! 🐙
All goals completed! 🐙
Приклад 7.2.13
noncomputable abbrev Series.example_7_2_13 : Series := (mk' (m:=1) (fun n ↦ (-1:ℝ)^(n:ℤ) / (n:ℤ)))
theorem Series.example_7_2_13a : example_7_2_13.converges := ⊢ example_7_2_13.converges
All goals completed! 🐙
theorem Series.example_7_2_13b : ¬ example_7_2_13.absConverges := ⊢ ¬example_7_2_13.absConverges
All goals completed! 🐙
theorem 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 := fun (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
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:¬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! 🐙
}
Твердження 7.2.14 (a) (Series laws) / Вправа 7.2.5
theorem 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 := fun 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
c:ℝs:Seriesn:ℤhn:n < s.m⊢ (if n ≥ s.m then c * s.seq n else 0) = 0
c:ℝs:Seriesn:ℤhn:¬n ≥ s.m⊢ (if n ≥ s.m then c * s.seq n else 0) = 0
All goals completed! 🐙
}
Твердження 7.2.14 (b) (Series laws) / Вправа 7.2.5
theorem 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! 🐙
abbrev Series.from (s:Series) (m₁:ℤ) : Series :=
mk' (m := max s.m m₁) (fun n ↦ s.seq (n:ℤ))
Твердження 7.2.14 (c) (Series laws) / Вправа 7.2.5
theorem 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 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.converges⊢ s.sum = ∑ n ∈ Finset.Ico s.m (s.m + ↑k), s.seq n + (s.from (s.m + ↑k)).sum
All goals completed! 🐙
Твердження 7.2.14 (d) (Series laws) / Вправа 7.2.5
theorem 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! 🐙
Лема 7.2.15 (telescoping series) / Вправа 7.2.6
theorem Series.telescope {a:ℕ → ℝ} (ha: Filter.Tendsto a Filter.atTop (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! 🐙
/- Вправа 7.2.1 -/
def 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