Аналіз I, Розділ 9.4: Неперервні функції

Я (прим. перекл. Терренс Тао) намагався зробити переклад якомога точнішим перефразуванням оригінального тексту. Коли є вибір між більш ідіоматичним підходом Lean та більш точним перекладом, я зазвичай обирав останній. Зокрема, будуть місця, де код Lean можна було б "підправити", щоб зробити його більш елегантним та ідіоматичним, але я свідомо уникав цього вибору.

Основні конструкції та результати цього розділу:

namespace Chapter9

Визначення 9.4.1. Тут ми використовуємо визначення неперервності з Mathlib. Гіпотеза Unknown identifier `x`sorry ∈ sorry : Propx ∈ Unknown identifier `X`X не потрібна!

theorem ContinuousWithinAt.iff (X:Set ℝ) (f: ℝ → ℝ) (x₀:ℝ) : ContinuousWithinAt f X x₀ ↔ Convergesto X f (f x₀) x₀ := X:Set ℝf:ℝ → ℝx₀:ℝ⊢ ContinuousWithinAt f X x₀ ↔ Convergesto X f (f x₀) x₀ All goals completed! 🐙
ContinuousOn.eq_1.{u_1, u_2} {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (f : X → Y)
  (s : Set X) : ContinuousOn f s = ∀ x ∈ s, ContinuousWithinAt f s x
continuous_iff_continuousOn_univ.{u_1, u_2} {α : Type u_1} {β : Type u_2} [TopologicalSpace α] [TopologicalSpace β]
  {f : α → β} : ContinuousOn f Set.univ ↔ Continuous f
continuousWithinAt_univ.{u_1, u_2} {α : Type u_1} {β : Type u_2} [TopologicalSpace α] [TopologicalSpace β] (f : α → β)
  (x : α) : ContinuousWithinAt f Set.univ x ↔ ContinuousAt f x

Приклад 9.4.2 -

declaration uses 'sorry'example (c x₀:ℝ) : ContinuousWithinAt (fun x ↦ c) .univ x₀ := c:ℝx₀:ℝ⊢ ContinuousWithinAt (fun x => c) Set.univ x₀ All goals completed! 🐙
declaration uses 'sorry'example (c x₀:ℝ) : ContinuousAt (fun x ↦ c) x₀ := c:ℝx₀:ℝ⊢ ContinuousAt (fun x => c) x₀ All goals completed! 🐙declaration uses 'sorry'example (c:ℝ) : ContinuousOn (fun x:ℝ ↦ c) .univ := c:ℝ⊢ ContinuousOn (fun x => c) Set.univ All goals completed! 🐙declaration uses 'sorry'example (c:ℝ) : Continuous (fun x:ℝ ↦ c) := c:ℝ⊢ Continuous fun x => c All goals completed! 🐙

Приклад 9.4.3 -

declaration uses 'sorry'example : Continuous (fun x:ℝ ↦ x) := ⊢ Continuous fun x => x All goals completed! 🐙

Приклад 9.4.4 -

declaration uses 'sorry'example {x₀:ℝ} (h: x₀ ≠ 0) : ContinuousAt Real.sign x₀ := x₀:ℝh:x₀ ≠ 0⊢ ContinuousAt Real.sign x₀ All goals completed! 🐙
declaration uses 'sorry'example :¬ ContinuousAt Real.sign 0 := ⊢ ¬ContinuousAt Real.sign 0 All goals completed! 🐙

Приклад 9.4.5 -

declaration uses 'sorry'example (x₀:ℝ) : ¬ ContinuousAt f_9_3_21 x₀ := x₀:ℝ⊢ ¬ContinuousAt f_9_3_21 x₀ All goals completed! 🐙

Приклад 9.4.6 -

noncomputable abbrev f_9_4_6 (x:ℝ) : ℝ := if x ≥ 0 then 1 else 0
declaration uses 'sorry'example {x₀:ℝ} (h: x₀ ≠ 0) : ContinuousAt f_9_4_6 x₀ := x₀:ℝh:x₀ ≠ 0⊢ ContinuousAt f_9_4_6 x₀ All goals completed! 🐙declaration uses 'sorry'example : ¬ ContinuousAt f_9_4_6 0 := ⊢ ¬ContinuousAt f_9_4_6 0 All goals completed! 🐙declaration uses 'sorry'example : ContinuousWithinAt f_9_4_6 (.Ici 0) 0 := ⊢ ContinuousWithinAt f_9_4_6 (Set.Ici 0) 0 All goals completed! 🐙

Твердження 9.4.7 / Вправа 9.4.1. Можливо, гіпотеза Unknown identifier `x₀`sorry ∈ sorry : Propx₀ ∈ Unknown identifier `X`X не є необхідною.

theorem declaration uses 'sorry'ContinuousWithinAt.tfae (X:Set ℝ) (f: ℝ → ℝ) {x₀:ℝ} (h : x₀ ∈ X) : [ ContinuousWithinAt f X x₀, ∀ a:ℕ → ℝ, (∀ n, a n ∈ X) → Filter.atTop.Tendsto a (nhds x₀) → Filter.atTop.Tendsto (fun n ↦ f (a n)) (nhds (f x₀)), ∀ ε > 0, ∃ δ > 0, ∀ x ∈ X, |x-x₀| < δ → |f x - f x₀| < ε ].TFAE := X:Set ℝf:ℝ → ℝx₀:ℝh:x₀ ∈ X⊢ [ContinuousWithinAt f X x₀, ∀ (a : ℕ → ℝ), (∀ (n : ℕ), a n ∈ X) → Filter.Tendsto a Filter.atTop (nhds x₀) → Filter.Tendsto (fun n => f (a n)) Filter.atTop (nhds (f x₀)), ∀ ε > 0, ∃ δ > 0, ∀ x ∈ X, |x - x₀| < δ → |f x - f x₀| < ε].TFAE All goals completed! 🐙

Зауваження 9.4.8 -

theorem _root_.Filter.Tendsto.comp_of_continuous {X:Set ℝ} {f: ℝ → ℝ} {x₀:ℝ} (h : x₀ ∈ X) (h_cont: ContinuousWithinAt f X x₀) {a: ℕ → ℝ} (ha: ∀ n, a n ∈ X) (hconv: Filter.atTop.Tendsto a (nhds x₀)): Filter.atTop.Tendsto (fun n ↦ f (a n)) (nhds (f x₀)) := X:Set ℝf:ℝ → ℝx₀:ℝh:x₀ ∈ Xh_cont:ContinuousWithinAt f X x₀a:ℕ → ℝha:∀ (n : ℕ), a n ∈ Xhconv:Filter.Tendsto a Filter.atTop (nhds x₀)⊢ Filter.Tendsto (fun n => f (a n)) Filter.atTop (nhds (f x₀)) X:Set ℝf:ℝ → ℝx₀:ℝh:x₀ ∈ Xh_cont:ContinuousWithinAt f X x₀a:ℕ → ℝha:∀ (n : ℕ), a n ∈ Xhconv:Filter.Tendsto a Filter.atTop (nhds x₀)this:?_mvar.4281 := List.TFAE.out (ContinuousWithinAt.tfae _fvar.4270 _fvar.4271 _fvar.4273) 0 1 ?_mvar.4326 ?_mvar.4327⊢ Filter.Tendsto (fun n => f (a n)) Filter.atTop (nhds (f x₀)) All goals completed! 🐙
/- Твердження 9.4.9 -/ theorem ContinuousWithinAt.add {X:Set ℝ} (f g: ℝ → ℝ) {x₀:ℝ} (h : x₀ ∈ X) (hf: ContinuousWithinAt f X x₀) (hg: ContinuousWithinAt g X x₀) : ContinuousWithinAt (f + g) X x₀ := X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ Xhf:ContinuousWithinAt f X x₀hg:ContinuousWithinAt g X x₀⊢ ContinuousWithinAt (f + g) X x₀ X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ Xhf:Convergesto X f (f x₀) x₀hg:Convergesto X g (g x₀) x₀⊢ Convergesto X (f + g) ((f + g) x₀) x₀; All goals completed! 🐙theorem ContinuousWithinAt.sub {X:Set ℝ} (f g: ℝ → ℝ) {x₀:ℝ} (h : x₀ ∈ X) (hf: ContinuousWithinAt f X x₀) (hg: ContinuousWithinAt g X x₀) : ContinuousWithinAt (f - g) X x₀ := X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ Xhf:ContinuousWithinAt f X x₀hg:ContinuousWithinAt g X x₀⊢ ContinuousWithinAt (f - g) X x₀ X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ Xhf:Convergesto X f (f x₀) x₀hg:Convergesto X g (g x₀) x₀⊢ Convergesto X (f - g) ((f - g) x₀) x₀; All goals completed! 🐙theorem ContinuousWithinAt.max {X:Set ℝ} (f g: ℝ → ℝ) {x₀:ℝ} (h : x₀ ∈ X) (hf: ContinuousWithinAt f X x₀) (hg: ContinuousWithinAt g X x₀) : ContinuousWithinAt (max f g) X x₀ := X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ Xhf:ContinuousWithinAt f X x₀hg:ContinuousWithinAt g X x₀⊢ ContinuousWithinAt (f ⊔ g) X x₀ X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ Xhf:Convergesto X f (f x₀) x₀hg:Convergesto X g (g x₀) x₀⊢ Convergesto X (f ⊔ g) (Max.max f g x₀) x₀; All goals completed! 🐙theorem ContinuousWithinAt.min {X:Set ℝ} (f g: ℝ → ℝ) {x₀:ℝ} (h : x₀ ∈ X) (hf: ContinuousWithinAt f X x₀) (hg: ContinuousWithinAt g X x₀) : ContinuousWithinAt (min f g) X x₀ := X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ Xhf:ContinuousWithinAt f X x₀hg:ContinuousWithinAt g X x₀⊢ ContinuousWithinAt (f ⊓ g) X x₀ X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ Xhf:Convergesto X f (f x₀) x₀hg:Convergesto X g (g x₀) x₀⊢ Convergesto X (f ⊓ g) (Min.min f g x₀) x₀; All goals completed! 🐙theorem ContinuousWithinAt.mul' {X:Set ℝ} (f g: ℝ → ℝ) {x₀:ℝ} (h : x₀ ∈ X) (hf: ContinuousWithinAt f X x₀) (hg: ContinuousWithinAt g X x₀) : ContinuousWithinAt (f * g) X x₀ := X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ Xhf:ContinuousWithinAt f X x₀hg:ContinuousWithinAt g X x₀⊢ ContinuousWithinAt (f * g) X x₀ X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ Xhf:Convergesto X f (f x₀) x₀hg:Convergesto X g (g x₀) x₀⊢ Convergesto X (f * g) ((f * g) x₀) x₀; All goals completed! 🐙theorem ContinuousWithinAt.div' {X:Set ℝ} (f g: ℝ → ℝ) {x₀:ℝ} (h : x₀ ∈ X) (hM: g x₀ ≠ 0) (hf: ContinuousWithinAt f X x₀) (hg: ContinuousWithinAt g X x₀) : ContinuousWithinAt (f / g) X x₀ := X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ XhM:g x₀ ≠ 0hf:ContinuousWithinAt f X x₀hg:ContinuousWithinAt g X x₀⊢ ContinuousWithinAt (f / g) X x₀ X:Set ℝf:ℝ → ℝg:ℝ → ℝx₀:ℝh:x₀ ∈ XhM:g x₀ ≠ 0hf:Convergesto X f (f x₀) x₀hg:Convergesto X g (g x₀) x₀⊢ Convergesto X (f / g) ((f / g) x₀) x₀; All goals completed! 🐙

Твердження 9.4.10 / Вправа 9.4.3

theorem declaration uses 'sorry'Continuous.exp {a:ℝ} (ha: a>0) : Continuous (fun x:ℝ ↦ a ^ x) := a:ℝha:a > 0⊢ Continuous fun x => a ^ x All goals completed! 🐙

Твердження 9.4.11 / Вправа 9.4.4

theorem declaration uses 'sorry'Continuous.exp' (p:ℝ) : ContinuousOn (fun x:ℝ ↦ x ^ p) (.Ioi 0) := p:ℝ⊢ ContinuousOn (fun x => x ^ p) (Set.Ioi 0) All goals completed! 🐙

Твердження 9.4.12

theorem declaration uses 'sorry'Continuous.abs : Continuous (fun x:ℝ ↦ |x|) := ⊢ Continuous fun x => |x| All goals completed! 🐙 -- TODO

Твердження 9.4.13 / Вправа 9.4.5

theorem declaration uses 'sorry'ContinuousWithinAt.comp {X Y: Set ℝ} {f g:ℝ → ℝ} (hf: ∀ x ∈ X, f x ∈ Y) {x₀:ℝ} (hx₀: x ∈ X) (hf_cont: ContinuousWithinAt f X x₀) (hg_cont: ContinuousWithinAt g Y (f x₀)): ContinuousWithinAt (g ∘ f) X x₀ := x:ℝX:Set ℝY:Set ℝf:ℝ → ℝg:ℝ → ℝhf:∀ x ∈ X, f x ∈ Yx₀:ℝhx₀:x ∈ Xhf_cont:ContinuousWithinAt f X x₀hg_cont:ContinuousWithinAt g Y (f x₀)⊢ ContinuousWithinAt (g ∘ f) X x₀ All goals completed! 🐙

Приклад 9.4.14

declaration uses 'sorry'example : Continuous (fun x:ℝ ↦ 3*x + 1) := ⊢ Continuous fun x => 3 * x + 1 All goals completed! 🐙
declaration uses 'sorry'example : Continuous (fun x:ℝ ↦ (5:ℝ)^x) := ⊢ Continuous fun x => 5 ^ x All goals completed! 🐙declaration uses 'sorry'example : Continuous (fun x:ℝ ↦ (5:ℝ)^(3*x+1)) := ⊢ Continuous fun x => 5 ^ (3 * x + 1) All goals completed! 🐙declaration uses 'sorry'example : Continuous (fun x:ℝ ↦ |x^2-8*x+8|^(Real.sqrt 2) / (x^2 + 1)) := ⊢ Continuous fun x => |x ^ 2 - 8 * x + 8| ^ √2 / (x ^ 2 + 1) All goals completed! 🐙

Вправа 9.4.6

theorem declaration uses 'sorry'ContinuousOn.restrict {X Y:Set ℝ} {f: ℝ → ℝ} (hY: Y ⊆ X) (hf: ContinuousOn f X) : ContinuousOn f Y := X:Set ℝY:Set ℝf:ℝ → ℝhY:Y ⊆ Xhf:ContinuousOn f X⊢ ContinuousOn f Y All goals completed! 🐙

Вправа 9.4.7

theorem declaration uses 'sorry'Continuous.polynomial {n:ℕ} (c: Fin n → ℝ) : Continuous (fun x:ℝ ↦ ∑ i, c i * x ^ (i:ℕ)) := n:ℕc:Fin n → ℝ⊢ Continuous fun x => ∑ i, c i * x ^ ↑i All goals completed! 🐙