Аналіз I, Глава 6.4
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:
-
Lim sup and lim inf of sequences
-
Limit points of sequences
-
Comparison and squeeze tests
-
Completeness of the reals
abbrev Real.adherent (ε:ℝ) (a:Chapter6.Sequence) (x:ℝ) := ∃ n ≥ a.m, ε.close (a n) x
abbrev Real.continually_adherent (ε:ℝ) (a:Chapter6.Sequence) (x:ℝ) :=
∀ N ≥ a.m, ε.adherent (a.from N) x
namespace Chapter6
abbrev Sequence.limit_point (a:Sequence) (x:ℝ) : Prop :=
∀ ε > (0:ℝ), ε.continually_adherent a x
theorem Sequence.limit_point_def (a:Sequence) (x:ℝ) :
a.limit_point x ↔ ∀ ε > 0, ∀ N ≥ a.m, ∃ n ≥ N, |a n - x| ≤ ε := a:Sequencex:ℝ⊢ a.limit_point x ↔ ∀ ε > 0, ∀ N ≥ a.m, ∃ n ≥ N, |a.seq n - x| ≤ ε
a:Sequencex:ℝ⊢ (∀ ε > 0, ∀ N ≥ a.m, ∃ n ≥ (a.from N).m, ε.close ((a.from N).seq n) x) ↔ ∀ ε > 0, ∀ N ≥ a.m, ∃ n ≥ N, |a.seq n - x| ≤ ε
All goals completed! 🐙
noncomputable abbrev Example_6_4_3 : Sequence := (fun (n:ℕ) ↦ 1 - (10:ℝ)^(-(n:ℤ)-1))
Приклад 6.4.3
example : (0.1:ℝ).adherent Example_6_4_3 0.8 := ⊢ Real.adherent 0.1 Example_6_4_3 0.8 All goals completed! 🐙
Приклад 6.4.3
example : ¬ (0.1:ℝ).continually_adherent Example_6_4_3 0.8 := ⊢ ¬Real.continually_adherent 0.1 Example_6_4_3 0.8 All goals completed! 🐙
Приклад 6.4.3
example : (0.1:ℝ).continually_adherent Example_6_4_3 1 := ⊢ Real.continually_adherent 0.1 Example_6_4_3 1 All goals completed! 🐙
Приклад 6.4.3
example : Example_6_4_3.limit_point 1 := ⊢ Example_6_4_3.limit_point 1 All goals completed! 🐙
noncomputable abbrev Example_6_4_4 : Sequence :=
(fun (n:ℕ) ↦ (-1:ℝ)^n * (1 + (10:ℝ)^(-(n:ℤ)-1)))
Приклад 6.4.4
example : (0.1:ℝ).adherent Example_6_4_4 1 := ⊢ Real.adherent 0.1 Example_6_4_4 1 All goals completed! 🐙
Приклад 6.4.4
example : (0.1:ℝ).continually_adherent Example_6_4_4 1 := ⊢ Real.continually_adherent 0.1 Example_6_4_4 1 All goals completed! 🐙
Приклад 6.4.4
example : Example_6_4_4.limit_point 1 := ⊢ Example_6_4_4.limit_point 1 All goals completed! 🐙
Приклад 6.4.4
example : Example_6_4_4.limit_point (-1) := ⊢ Example_6_4_4.limit_point (-1) All goals completed! 🐙
Приклад 6.4.4
example : ¬ Example_6_4_4.limit_point 0 := ⊢ ¬Example_6_4_4.limit_point 0 All goals completed! 🐙
Твердження 6.4.5 / Вправа 6.4.1
theorem Sequence.limit_point_of_limit {a:Sequence} {x:ℝ} (h: a.tendsTo x) : a.limit_point x := a:Sequencex:ℝh:a.tendsTo x⊢ a.limit_point x
All goals completed! 🐙
A technical issue uncovered by the formalization: the upper and lower sequences of a real sequence take values in the extended reals rather than the reals, so the definitions need to be adjusted accordingly.
noncomputable abbrev Sequence.upperseq (a:Sequence) : ℤ → EReal := fun N ↦ (a.from N).sup
noncomputable abbrev Sequence.limsup (a:Sequence) : EReal :=
sInf { x | ∃ N ≥ a.m, x = a.upperseq N }
noncomputable abbrev Sequence.lowerseq (a:Sequence) : ℤ → EReal := fun N ↦ (a.from N).inf
noncomputable abbrev Sequence.liminf (a:Sequence) : EReal :=
sSup { x | ∃ N ≥ a.m, x = a.lowerseq N }
noncomputable abbrev Example_6_4_7 : Sequence := (fun (n:ℕ) ↦ (-1:ℝ)^n * (1 + (10:ℝ)^(-(n:ℤ)-1)))
example (n:ℕ) :
Example_6_4_7.upperseq n = if Even n then 1 + (10:ℝ)^(-(n:ℤ)-1) else 1 + (10:ℝ)^(-(n:ℤ)-2) := n:ℕ⊢ Example_6_4_7.upperseq ↑n = ↑(if Even n then 1 + 10 ^ (-↑n - 1) else 1 + 10 ^ (-↑n - 2))
All goals completed! 🐙
example : Example_6_4_7.limsup = 1 := ⊢ Example_6_4_7.limsup = 1 All goals completed! 🐙
example (n:ℕ) :
Example_6_4_7.lowerseq n
= if Even n then -(1 + (10:ℝ)^(-(n:ℤ)-2)) else -(1 + (10:ℝ)^(-(n:ℤ)-1)) := n:ℕ⊢ Example_6_4_7.lowerseq ↑n = ↑(if Even n then -(1 + 10 ^ (-↑n - 2)) else -(1 + 10 ^ (-↑n - 1)))
All goals completed! 🐙
example : Example_6_4_7.liminf = -1 := ⊢ Example_6_4_7.liminf = -1 All goals completed! 🐙
example : Example_6_4_7.sup = (1.1:ℝ) := ⊢ Example_6_4_7.sup = ↑1.1 All goals completed! 🐙
example : Example_6_4_7.inf = (-1.01:ℝ) := ⊢ Example_6_4_7.inf = ↑(-1.01) All goals completed! 🐙
noncomputable abbrev Example_6_4_8 : Sequence := (fun (n:ℕ) ↦ if Even n then (n+1:ℝ) else -(n:ℝ)-1)
example (n:ℕ) : Example_6_4_8.upperseq n = ⊤ := n:ℕ⊢ Example_6_4_8.upperseq ↑n = ⊤ All goals completed! 🐙
example : Example_6_4_8.limsup = ⊤ := ⊢ Example_6_4_8.limsup = ⊤ All goals completed! 🐙
example (n:ℕ) : Example_6_4_8.lowerseq n = ⊥ := n:ℕ⊢ Example_6_4_8.lowerseq ↑n = ⊥ All goals completed! 🐙
example : Example_6_4_8.liminf = ⊥ := ⊢ Example_6_4_8.liminf = ⊥ All goals completed! 🐙
noncomputable abbrev Example_6_4_9 : Sequence :=
(fun (n:ℕ) ↦ if Even n then (n+1:ℝ)⁻¹ else -(n+1:ℝ)⁻¹)
example (n:ℕ) : Example_6_4_9.upperseq n = if Even n then (n+1:ℝ)⁻¹ else -(n+2:ℝ)⁻¹ := n:ℕ⊢ Example_6_4_9.upperseq ↑n = ↑(if Even n then (↑n + 1)⁻¹ else -(↑n + 2)⁻¹) All goals completed! 🐙
example : Example_6_4_9.limsup = 0 := ⊢ Example_6_4_9.limsup = 0 All goals completed! 🐙
example (n:ℕ) : Example_6_4_9.lowerseq n = if Even n then -(n+2:ℝ)⁻¹ else -(n+1:ℝ)⁻¹ := n:ℕ⊢ Example_6_4_9.lowerseq ↑n = ↑(if Even n then -(↑n + 2)⁻¹ else -(↑n + 1)⁻¹) All goals completed! 🐙
example : Example_6_4_9.liminf = 0 := ⊢ Example_6_4_9.liminf = 0 All goals completed! 🐙
noncomputable abbrev Example_6_4_10 : Sequence := (fun (n:ℕ) ↦ (n+1:ℝ))
example (n:ℕ) : Example_6_4_10.upperseq n = ⊤ := n:ℕ⊢ Example_6_4_10.upperseq ↑n = ⊤ All goals completed! 🐙
example : Example_6_4_9.limsup = ⊤ := ⊢ Example_6_4_9.limsup = ⊤ All goals completed! 🐙
example (n:ℕ) : Example_6_4_9.lowerseq n = n+1 := n:ℕ⊢ Example_6_4_9.lowerseq ↑n = ↑n + 1 All goals completed! 🐙
example : Example_6_4_9.liminf = ⊤ := ⊢ Example_6_4_9.liminf = ⊤ All goals completed! 🐙
Твердження 6.4.12(a)
theorem Sequence.gt_limsup_bounds {a:Sequence} {x:EReal} (h: x > a.limsup) :
∃ N ≥ a.m, ∀ n ≥ N, a n < x := a:Sequencex:ERealh:x > a.limsup⊢ ∃ N ≥ a.m, ∀ n ≥ N, ↑(a.seq n) < x
-- цей доказ написан так, щоб співпадати із структурою орігінального тексту.
a:Sequencex:ERealh:x > sInf {x | ∃ N ≥ a.m, x = a.upperseq N}⊢ ∃ N ≥ a.m, ∀ n ≥ N, ↑(a.seq n) < x
a:Sequencex:ERealh:∃ a_1, (∃ N, a.m ≤ N ∧ a_1 = a.upperseq N) ∧ a_1 < x⊢ ∃ N ≥ a.m, ∀ n ≥ N, ↑(a.seq n) < x
a:Sequencex:ERealaN:ERealha:aN < xN:ℤhN:a.m ≤ NhaN:aN = a.upperseq N⊢ ∃ N ≥ a.m, ∀ n ≥ N, ↑(a.seq n) < x
a:Sequencex:ERealaN:ERealha:aN < xN:ℤhN:a.m ≤ NhaN:aN = a.upperseq N⊢ N ≥ a.m ∧ ∀ n ≥ N, ↑(a.seq n) < x
a:Sequencex:ERealaN:ERealha:aN < xN:ℤhN:a.m ≤ NhaN:aN = a.upperseq N⊢ ∀ (n : ℤ), N ≤ n → ↑(a.seq n) < x
a:Sequencex:ERealaN:ERealN:ℤhN:a.m ≤ NhaN:aN = a.upperseq Nha:(a.from N).sup < x⊢ ∀ (n : ℤ), N ≤ n → ↑(a.seq n) < x
a:Sequencex:ERealaN:ERealN:ℤhN:a.m ≤ NhaN:aN = a.upperseq Nha:(a.from N).sup < xn:ℤhn:N ≤ n⊢ ↑(a.seq n) < x
have hn' : n ≥ (a.from N).m := a:Sequencex:ERealh:x > a.limsup⊢ ∃ N ≥ a.m, ∀ n ≥ N, ↑(a.seq n) < x All goals completed! 🐙
a:Sequencex:ERealaN:ERealN:ℤhN:a.m ≤ NhaN:aN = a.upperseq Nha:(a.from N).sup < xn:ℤhn:N ≤ nhn':n ≥ (a.from N).m⊢ ↑(a.seq n) = ↑((a.from N).seq n)
All goals completed! 🐙
Твердження 6.4.12(a)
theorem Sequence.lt_liminf_bounds {a:Sequence} {y:EReal} (h: y < a.liminf) :
∃ N ≥ a.m, ∀ n ≥ N, a n > y := a:Sequencey:ERealh:y < a.liminf⊢ ∃ N ≥ a.m, ∀ n ≥ N, ↑(a.seq n) > y
All goals completed! 🐙
Твердження 6.4.12(b)
theorem Sequence.lt_limsup_bounds {a:Sequence} {x:EReal} (h: x < a.limsup) {N:ℤ} (hN: N ≥ a.m) :
∃ n ≥ N, a n > x := a:Sequencex:ERealh:x < a.limsupN:ℤhN:N ≥ a.m⊢ ∃ n ≥ N, ↑(a.seq n) > x
-- цей доказ написан так, щоб співпадати із структурою орігінального тексту.
a:Sequencex:ERealh:x < sInf {x | ∃ N ≥ a.m, x = a.upperseq N}N:ℤhN:N ≥ a.m⊢ ∃ n ≥ N, ↑(a.seq n) > x
have hx : x < a.upperseq N := a:Sequencex:ERealh:x < a.limsupN:ℤhN:N ≥ a.m⊢ ∃ n ≥ N, ↑(a.seq n) > x
a:Sequencex:ERealh:x < sInf {x | ∃ N ≥ a.m, x = a.upperseq N}N:ℤhN:N ≥ a.m⊢ a.upperseq N ∈ {x | ∃ N ≥ a.m, x = a.upperseq N}
a:Sequencex:ERealh:x < sInf {x | ∃ N ≥ a.m, x = a.upperseq N}N:ℤhN:N ≥ a.m⊢ ∃ N_1, a.m ≤ N_1 ∧ a.upperseq N = a.upperseq N_1; All goals completed! 🐙
a:Sequencex:ERealh:x < sInf {x | ∃ N ≥ a.m, x = a.upperseq N}N:ℤhN:N ≥ a.mhx:x < (a.from N).sup⊢ ∃ n ≥ N, ↑(a.seq n) > x
a:Sequencex:ERealh:x < sInf {x | ∃ N ≥ a.m, x = a.upperseq N}N:ℤhN:N ≥ a.mhx:∃ n ≥ (a.from N).m, x < ↑((a.from N).seq n) ∧ ↑((a.from N).seq n) ≤ (a.from N).sup⊢ ∃ n ≥ N, ↑(a.seq n) > x
a:Sequencex:ERealh:x < sInf {x | ∃ N ≥ a.m, x = a.upperseq N}N:ℤhN:N ≥ a.mn:ℤhn:n ≥ (a.from N).mhxn:x < ↑((a.from N).seq n)right✝:↑((a.from N).seq n) ≤ (a.from N).sup⊢ ∃ n ≥ N, ↑(a.seq n) > x
a:Sequencex:ERealh:x < sInf {x | ∃ N ≥ a.m, x = a.upperseq N}N:ℤhN:N ≥ a.mn:ℤhxn:x < ↑((a.from N).seq n)right✝:↑((a.from N).seq n) ≤ (a.from N).suphn:N ≤ n⊢ ∃ n ≥ N, ↑(a.seq n) > x
a:Sequencex:ERealh:x < sInf {x | ∃ N ≥ a.m, x = a.upperseq N}N:ℤhN:N ≥ a.mn:ℤhxn:x < ↑((a.from N).seq n)right✝:↑((a.from N).seq n) ≤ (a.from N).suphn:N ≤ n⊢ ↑(a.seq n) > x
a:Sequencex:ERealh:x < sInf {x | ∃ N ≥ a.m, x = a.upperseq N}N:ℤhN:N ≥ a.mn:ℤhxn:x < ↑((a.from N).seq n)right✝:↑((a.from N).seq n) ≤ (a.from N).suphn:N ≤ n⊢ ↑(a.seq n) = ↑((a.from N).seq n)
All goals completed! 🐙
Твердження 6.4.12(b)
theorem Sequence.gt_liminf_bounds {a:Sequence} {x:EReal} (h: x > a.liminf) {N:ℤ} (hN: N ≥ a.m) :
∃ n ≥ N, a n < x := a:Sequencex:ERealh:x > a.liminfN:ℤhN:N ≥ a.m⊢ ∃ n ≥ N, ↑(a.seq n) < x
All goals completed! 🐙
Твердження 6.4.12(c) / Вправа 6.4.3
theorem Sequence.inf_le_liminf (a:Sequence) : a.inf ≤ a.liminf := a:Sequence⊢ a.inf ≤ a.liminf All goals completed! 🐙
Твердження 6.4.12(c) / Вправа 6.4.3
theorem Sequence.liminf_le_limsup (a:Sequence) : a.liminf ≤ a.limsup := a:Sequence⊢ a.liminf ≤ a.limsup All goals completed! 🐙
Твердження 6.4.12(c) / Вправа 6.4.3
theorem Sequence.limsup_le_sup (a:Sequence) : a.limsup ≤ a.sup := a:Sequence⊢ a.limsup ≤ a.sup All goals completed! 🐙
Твердження 6.4.12(d) / Вправа 6.4.3
theorem Sequence.limit_point_between_liminf_limsup {a:Sequence} {c:ℝ} (h: a.limit_point c) :
a.liminf ≤ c ∧ c ≤ a.limsup := a:Sequencec:ℝh:a.limit_point c⊢ a.liminf ≤ ↑c ∧ ↑c ≤ a.limsup
All goals completed! 🐙
Твердження 6.4.12(e) / Вправа 6.4.3
theorem Sequence.limit_point_of_limsup {a:Sequence} {L_plus:ℝ} (h: a.limsup = L_plus) :
a.limit_point L_plus := a:SequenceL_plus:ℝh:a.limsup = ↑L_plus⊢ a.limit_point L_plus
All goals completed! 🐙
Твердження 6.4.12(e) / Вправа 6.4.3
theorem Sequence.limit_point_of_liminf {a:Sequence} {L_minus:ℝ} (h: a.liminf = L_minus) :
a.limit_point L_minus := a:SequenceL_minus:ℝh:a.liminf = ↑L_minus⊢ a.limit_point L_minus
All goals completed! 🐙
Твердження 6.4.12(f) / Вправа 6.4.3
theorem Sequence.tendsTo_iff_eq_limsup_liminf {a:Sequence} (c:ℝ) :
a.tendsTo c ↔ a.liminf = c ∧ a.limsup = c := a:Sequencec:ℝ⊢ a.tendsTo c ↔ a.liminf = ↑c ∧ a.limsup = ↑c
All goals completed! 🐙
Лема 6.4.13 (Comparison principle) / Вправа 6.4.4
theorem Sequence.sup_mono {a b:Sequence} (hm: a.m = b.m) (hab: ∀ n ≥ a.m, a n ≤ b n) :
a.sup ≤ b.sup := a:Sequenceb:Sequencehm:a.m = b.mhab:∀ n ≥ a.m, a.seq n ≤ b.seq n⊢ a.sup ≤ b.sup All goals completed! 🐙
Лема 6.4.13 (Comparison principle) / Вправа 6.4.4
theorem Sequence.inf_mono {a b:Sequence} (hm: a.m = b.m) (hab: ∀ n ≥ a.m, a n ≤ b n) :
a.inf ≤ b.inf := a:Sequenceb:Sequencehm:a.m = b.mhab:∀ n ≥ a.m, a.seq n ≤ b.seq n⊢ a.inf ≤ b.inf All goals completed! 🐙
Лема 6.4.13 (Comparison principle) / Вправа 6.4.4
theorem Sequence.limsup_mono {a b:Sequence} (hm: a.m = b.m) (hab: ∀ n ≥ a.m, a n ≤ b n) :
a.limsup ≤ b.limsup := a:Sequenceb:Sequencehm:a.m = b.mhab:∀ n ≥ a.m, a.seq n ≤ b.seq n⊢ a.limsup ≤ b.limsup All goals completed! 🐙
Лема 6.4.13 (Comparison principle) / Вправа 6.4.4
theorem Sequence.liminf_mono {a b:Sequence} (hm: a.m = b.m) (hab: ∀ n ≥ a.m, a n ≤ b n) :
a.liminf ≤ b.liminf := a:Sequenceb:Sequencehm:a.m = b.mhab:∀ n ≥ a.m, a.seq n ≤ b.seq n⊢ a.liminf ≤ b.liminf All goals completed! 🐙
Наслідок 6.4.14 (Squeeze test) / Вправа 6.4.5
theorem Sequence.lim_of_between {a b c:Sequence} {L:ℝ} (hm: b.m = a.m ∧ c.m = a.m)
(hab: ∀ n ≥ a.m, a n ≤ b n ∧ b n ≤ c n) (ha: a.tendsTo L) (hb: b.tendsTo L) :
c.tendsTo L := a:Sequenceb:Sequencec:SequenceL:ℝhm:b.m = a.m ∧ c.m = a.mhab:∀ n ≥ a.m, a.seq n ≤ b.seq n ∧ b.seq n ≤ c.seq nha:a.tendsTo Lhb:b.tendsTo L⊢ c.tendsTo L All goals completed! 🐙
Приклад 6.4.15
example : ((fun (n:ℕ) ↦ 2/(n+1:ℝ)):Sequence).tendsTo 0 := ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => 2 / (↑n + 1)) n.toNat else 0, vanish := ⋯ }.tendsTo 0
All goals completed! 🐙
Приклад 6.4.15
example : ((fun (n:ℕ) ↦ -2/(n+1:ℝ)):Sequence).tendsTo 0 := ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => -2 / (↑n + 1)) n.toNat else 0, vanish := ⋯ }.tendsTo 0
All goals completed! 🐙
Приклад 6.4.15
example : ((fun (n:ℕ) ↦ (-1)^n/(n+1:ℝ) + 1 / (n+1)^2):Sequence).tendsTo 0 := ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => (-1) ^ n / (↑n + 1) + 1 / (↑n + 1) ^ 2) n.toNat else 0,
vanish := ⋯ }.tendsTo
0
All goals completed! 🐙
Приклад 6.4.15
example : ((fun (n:ℕ) ↦ (2:ℝ)^(-(n:ℤ))):Sequence).tendsTo 0 := ⊢ { m := 0, seq := fun n => if n ≥ 0 then (fun n => 2 ^ (-↑n)) n.toNat else 0, vanish := ⋯ }.tendsTo 0
All goals completed! 🐙
abbrev Sequence.abs (a:Sequence) : Sequence where
m := a.m
seq := fun n ↦ |a n|
vanish := a:Sequence⊢ ∀ n < a.m, |a.seq n| = 0
a:Sequencen:ℤhn:n < a.m⊢ |a.seq n| = 0
All goals completed! 🐙
Наслідок 6.4.17 (Zero test for sequences) / Вправа 6.4.7
theorem Sequence.tendsTo_zero_iff (a:Sequence) :
a.tendsTo (0:ℝ) ↔ a.abs.tendsTo (0:ℝ) := a:Sequence⊢ a.tendsTo 0 ↔ a.abs.tendsTo 0
All goals completed! 🐙
This helper lemma, implicit in the textbook proofs of Theorem 6.4.18 and Theorem 6.6.8, is made explicit here.
theorem Sequence.finite_limsup_liminf_of_bounded {a:Sequence} (hbound: a.isBounded) :
(∃ L_plus:ℝ, a.limsup = L_plus) ∧ (∃ L_minus:ℝ, a.liminf = L_minus) := a:Sequencehbound:a.isBounded⊢ (∃ L_plus, a.limsup = ↑L_plus) ∧ ∃ L_minus, a.liminf = ↑L_minus
a:SequenceM:ℝhMpos:M ≥ 0hbound:a.BoundedBy M⊢ (∃ L_plus, a.limsup = ↑L_plus) ∧ ∃ L_minus, a.liminf = ↑L_minus
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ M⊢ (∃ L_plus, a.limsup = ↑L_plus) ∧ ∃ L_minus, a.liminf = ↑L_minus
have hlimsup_bound : a.limsup ≤ M := a:Sequencehbound:a.isBounded⊢ (∃ L_plus, a.limsup = ↑L_plus) ∧ ∃ L_minus, a.liminf = ↑L_minus
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ M⊢ a.sup ≤ ↑M
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ M⊢ ∀ n ≥ a.m, ↑(a.seq n) ≤ ↑M
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mn:ℤhN:n ≥ a.m⊢ ↑(a.seq n) ≤ ↑M
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mn:ℤhN:n ≥ a.m⊢ a.seq n ≤ M
All goals completed! 🐙
have hliminf_bound : -M ≤ a.liminf := a:Sequencehbound:a.isBounded⊢ (∃ L_plus, a.limsup = ↑L_plus) ∧ ∃ L_minus, a.liminf = ↑L_minus
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑M⊢ -↑M ≤ a.inf
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑M⊢ ∀ n ≥ a.m, ↑(a.seq n) ≥ -↑M
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mn:ℤhN:n ≥ a.m⊢ ↑(a.seq n) ≥ -↑M
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mn:ℤhN:n ≥ a.m⊢ -M ≤ a.seq n
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mn:ℤhN:n ≥ a.m⊢ -a.seq n ≤ M
All goals completed! 🐙
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ ∃ L_plus, a.limsup = ↑L_plusa:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ ∃ L_minus, a.liminf = ↑L_minus
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ ∃ L_plus, a.limsup = ↑L_plus a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ a.limsup = ↑a.limsup.toReal
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ a.limsup ≠ ⊤a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ a.limsup ≠ ⊥
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ a.limsup ≠ ⊤ a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhliminf_bound:-↑M ≤ a.liminfhlimsup_bound:a.limsup = ⊤⊢ ↑M < a.limsup
All goals completed! 🐙
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.limsup⊢ a.limsup ≠ ⊥
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:a.limsup = ⊥⊢ a.limsup < -↑M
All goals completed! 🐙
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ a.liminf = ↑a.liminf.toReal
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ a.liminf ≠ ⊤a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ a.liminf ≠ ⊥
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:-↑M ≤ a.liminf⊢ a.liminf ≠ ⊤ a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhliminf_bound:-↑M ≤ a.liminfhlimsup_bound:a.liminf ≤ ↑M⊢ a.liminf ≠ ⊤
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhliminf_bound:-↑M ≤ a.liminfhlimsup_bound:a.liminf = ⊤⊢ ↑M < a.liminf
All goals completed! 🐙
a:SequenceM:ℝhMpos:M ≥ 0hbound:∀ (n : ℤ), |a.seq n| ≤ Mhlimsup_bound:a.limsup ≤ ↑Mhliminf_bound:a.liminf = ⊥⊢ a.liminf < -↑M
All goals completed! 🐙
Теорема 6.4.18 (Completeness of the reals)
theorem Sequence.Cauchy_iff_convergent (a:Sequence) :
a.isCauchy ↔ a.convergent := a:Sequence⊢ a.isCauchy ↔ a.convergent
-- цей доказ написан так, щоб співпадати із структурою орігінального тексту.
a:Sequence⊢ a.isCauchy → a.convergent
a:Sequenceh:a.isCauchy⊢ a.convergent
a:Sequenceh:a.isCauchyL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minus⊢ a.convergent
a:Sequenceh:a.isCauchyL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minus⊢ a.tendsTo L_minus
a:Sequenceh:a.isCauchyL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minus⊢ a.liminf = ↑L_minus ∧ a.limsup = ↑L_minus
a:Sequenceh:a.isCauchyL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minus⊢ L_plus = L_minus
have hlow : 0 ≤ L_plus - L_minus := a:Sequence⊢ a.isCauchy ↔ a.convergent
a:Sequenceh:a.isCauchyL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minusthis:a.liminf ≤ a.limsup⊢ 0 ≤ L_plus - L_minus
a:Sequenceh:a.isCauchyL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minusthis:L_minus ≤ L_plus⊢ 0 ≤ L_plus - L_minus
All goals completed! 🐙
have hup (ε:ℝ) (hε: ε>0) : L_plus - L_minus ≤ 2*ε := a:Sequence⊢ a.isCauchy ↔ a.convergent
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0h:ε.eventuallySteady a⊢ L_plus - L_minus ≤ 2 * ε
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:ε.steady (a.from N)⊢ L_plus - L_minus ≤ 2 * ε
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ ε⊢ L_plus - L_minus ≤ 2 * ε
have hN0 : N ≥ (a.from N).m := a:Sequence⊢ a.isCauchy ↔ a.convergent
All goals completed! 🐙
have hN1 : (a.from N).seq N = a.seq N := a:Sequence⊢ a.isCauchy ↔ a.convergent
All goals completed! 🐙
have h1 : (a N - ε:ℝ) ≤ (a.from N).inf := a:Sequence⊢ a.isCauchy ↔ a.convergent
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq N⊢ ∀ n ≥ (a.from N).m, ↑((a.from N).seq n) ≥ ↑(a.seq N - ε)
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nn:ℤhn:n ≥ (a.from N).m⊢ ↑((a.from N).seq n) ≥ ↑(a.seq N - ε)
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nn:ℤhn:n ≥ (a.from N).mhsteady:dist ((a.from N).seq n) ((a.from N).seq N) ≤ ε⊢ ↑((a.from N).seq n) ≥ ↑(a.seq N - ε)
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nn:ℤhn:n ≥ (a.from N).mhsteady:dist ((a.from N).seq n) ((a.from N).seq N) ≤ ε⊢ a.seq N - ε ≤ (a.from N).seq n
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nn:ℤhn:n ≥ (a.from N).mhsteady:(a.from N).seq n - a.seq N ≤ ε ∧ -((a.from N).seq n - a.seq N) ≤ ε⊢ a.seq N - ε ≤ (a.from N).seq n
All goals completed! 🐙
have h2 : (a.from N).inf ≤ L_minus := a:Sequence⊢ a.isCauchy ↔ a.convergent
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).inf⊢ (a.from N).inf ≤ sSup {x | ∃ N ≥ a.m, x = (a.from N).inf}
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).inf⊢ (a.from N).inf ∈ {x | ∃ N ≥ a.m, x = (a.from N).inf}
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).inf⊢ ∃ N_1, a.m ≤ N_1 ∧ (a.from N).inf = (a.from N_1).inf; All goals completed! 🐙
have h3 : (a.from N).sup ≤ (a N + ε:ℝ) := a:Sequence⊢ a.isCauchy ↔ a.convergent
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).infh2:(a.from N).inf ≤ ↑L_minus⊢ ∀ n ≥ (a.from N).m, ↑((a.from N).seq n) ≤ ↑(a.seq N + ε)
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).infh2:(a.from N).inf ≤ ↑L_minusn:ℤhn:n ≥ (a.from N).m⊢ ↑((a.from N).seq n) ≤ ↑(a.seq N + ε)
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).infh2:(a.from N).inf ≤ ↑L_minusn:ℤhn:n ≥ (a.from N).mhsteady:dist ((a.from N).seq n) ((a.from N).seq N) ≤ ε⊢ ↑((a.from N).seq n) ≤ ↑(a.seq N + ε)
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).infh2:(a.from N).inf ≤ ↑L_minusn:ℤhn:n ≥ (a.from N).mhsteady:dist ((a.from N).seq n) ((a.from N).seq N) ≤ ε⊢ (a.from N).seq n ≤ a.seq N + ε
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).infh2:(a.from N).inf ≤ ↑L_minusn:ℤhn:n ≥ (a.from N).mhsteady:(a.from N).seq n - a.seq N ≤ ε ∧ -((a.from N).seq n - a.seq N) ≤ ε⊢ (a.from N).seq n ≤ a.seq N + ε
All goals completed! 🐙
have h4 : L_plus ≤ (a.from N).sup := a:Sequence⊢ a.isCauchy ↔ a.convergent
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).infh2:(a.from N).inf ≤ ↑L_minush3:(a.from N).sup ≤ ↑(a.seq N + ε)⊢ sInf {x | ∃ N ≥ a.m, x = (a.from N).sup} ≤ (a.from N).sup
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).infh2:(a.from N).inf ≤ ↑L_minush3:(a.from N).sup ≤ ↑(a.seq N + ε)⊢ (a.from N).sup ∈ {x | ∃ N ≥ a.m, x = (a.from N).sup}
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh1:↑(a.seq N - ε) ≤ (a.from N).infh2:(a.from N).inf ≤ ↑L_minush3:(a.from N).sup ≤ ↑(a.seq N + ε)⊢ ∃ N_1, a.m ≤ N_1 ∧ (a.from N).sup = (a.from N_1).sup; All goals completed! 🐙
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh2:(a.from N).inf ≤ ↑L_minush3:(a.from N).sup ≤ ↑(a.seq N + ε)h4:↑L_plus ≤ (a.from N).suph1:↑(a.seq N - ε) ≤ ↑L_minus⊢ L_plus - L_minus ≤ 2 * ε
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh2:(a.from N).inf ≤ ↑L_minush3:(a.from N).sup ≤ ↑(a.seq N + ε)h1:↑(a.seq N - ε) ≤ ↑L_minush4:↑L_plus ≤ ↑(a.seq N + ε)⊢ L_plus - L_minus ≤ 2 * ε
a:SequenceL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow:0 ≤ L_plus - L_minusε:ℝhε:ε > 0N:ℤhN:N ≥ a.mhsteady:∀ n ≥ (a.from N).m, ∀ m ≥ (a.from N).m, dist ((a.from N).seq n) ((a.from N).seq m) ≤ εhN0:N ≥ (a.from N).mhN1:(a.from N).seq N = a.seq Nh2:(a.from N).inf ≤ ↑L_minush3:(a.from N).sup ≤ ↑(a.seq N + ε)h1:a.seq N - ε ≤ L_minush4:L_plus ≤ a.seq N + ε⊢ L_plus - L_minus ≤ 2 * ε
All goals completed! 🐙
a:Sequenceh:a.isCauchyL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow✝:0 ≤ L_plus - L_minushup:∀ ε > 0, L_plus - L_minus ≤ 2 * εhlow:0 < L_plus - L_minus⊢ L_plus = L_minusa:Sequenceh:a.isCauchyL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow✝:0 ≤ L_plus - L_minushup:∀ ε > 0, L_plus - L_minus ≤ 2 * εhlow:0 = L_plus - L_minus⊢ L_plus = L_minus
a:Sequenceh:a.isCauchyL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow✝:0 ≤ L_plus - L_minushup:∀ ε > 0, L_plus - L_minus ≤ 2 * εhlow:0 < L_plus - L_minus⊢ L_plus = L_minus specialize hup ((L_plus - L_minus)/3) (a:Sequenceh:a.isCauchyL_plus:ℝhL_plus:a.limsup = ↑L_plusL_minus:ℝhL_minus:a.liminf = ↑L_minushlow✝:0 ≤ L_plus - L_minushup:∀ ε > 0, L_plus - L_minus ≤ 2 * εhlow:0 < L_plus - L_minus⊢ (L_plus - L_minus) / 3 > 0 All goals completed! 🐙)
All goals completed! 🐙
All goals completed! 🐙
Вправа 6.4.6
theorem Sequence.sup_not_strict_mono : ∃ (a b:ℕ → ℝ), (∀ n, a n < b n) ∧ (a:Sequence).sup ≠ (b:Sequence).sup := ⊢ ∃ a b,
(∀ (n : ℕ), a n < b n) ∧
{ m := 0, seq := fun n => if n ≥ 0 then a n.toNat else 0, vanish := ⋯ }.sup ≠
{ m := 0, seq := fun n => if n ≥ 0 then b n.toNat else 0, vanish := ⋯ }.sup
All goals completed! 🐙
/- Вправа 6.4.7 -/
def Sequence.tendsTo_real_iff :
Decidable (∀ (a:Sequence) (x:ℝ), a.tendsTo x ↔ a.abs.tendsTo x) := ⊢ Decidable (∀ (a : Sequence) (x : ℝ), a.tendsTo x ↔ a.abs.tendsTo x)
-- The first line of this construction should be `apply isTrue` or `apply isFalse`.
All goals completed! 🐙
This definition is needed for Exercises 6.4.8 and 6.4.9.
abbrev Sequence.extended_limit_point (a:Sequence) (x:EReal) : Prop := if x = ⊤ then ¬ a.bddAbove else if x = ⊥ then ¬ a.bddBelow else a.limit_point x.toReal
Вправа 6.4.8
theorem Sequence.extended_limit_point_of_limsup (a:Sequence) : a.extended_limit_point a.limsup := a:Sequence⊢ a.extended_limit_point a.limsup All goals completed! 🐙
Вправа 6.4.8
theorem Sequence.extended_limit_point_of_liminf (a:Sequence) : a.extended_limit_point a.liminf := a:Sequence⊢ a.extended_limit_point a.liminf All goals completed! 🐙
theorem Sequence.extended_limit_point_le_limsup {a:Sequence} {L:EReal} (h:a.extended_limit_point L): L ≤ a.limsup := a:SequenceL:ERealh:a.extended_limit_point L⊢ L ≤ a.limsup All goals completed! 🐙
theorem Sequence.extended_limit_point_ge_liminf {a:Sequence} {L:EReal} (h:a.extended_limit_point L): L ≥ a.liminf := a:SequenceL:ERealh:a.extended_limit_point L⊢ L ≥ a.liminf All goals completed! 🐙
Вправа 6.4.9
theorem Sequence.exists_three_limit_points : ∃ a:Sequence, ∀ L:EReal, a.extended_limit_point L ↔ L = ⊥ ∨ L = 0 ∨ L = ⊤ := ⊢ ∃ a, ∀ (L : EReal), a.extended_limit_point L ↔ L = ⊥ ∨ L = 0 ∨ L = ⊤ All goals completed! 🐙
Вправа 6.4.10
theorem Sequence.limit_points_of_limit_points {a b:Sequence} {c:ℝ} (hab: ∀ n ≥ b.m, a.limit_point (b n)) (hbc: b.limit_point c) : a.limit_point c := a:Sequenceb:Sequencec:ℝhab:∀ n ≥ b.m, a.limit_point (b.seq n)hbc:b.limit_point c⊢ a.limit_point c All goals completed! 🐙
end Chapter6