フィルター¶
Filter α は,α の部分集合のうち,どれをフィルターに含めるかを指定する構造です.
数学的には,集合 \(X\) 上のフィルター \(\mathcal F\) は,部分集合族
\(\mathcal F \subseteq \mathcal P(X)\) であって,次を満たすものです.
通常の数学ではさらに \(\emptyset \notin \mathcal F\) も仮定します.
Lean の Filter X ではこの条件は定義には入っていませんが,
この章で扱う atTop や 𝓝 x を読むうえでは,まず意識しなくてかまいません.
この章では,フィルターの一般論よりも,次の 3 つの読み方が重要です.
型 α 上のフィルター l : Filter α を考えます.
s ∈ l:s : Set αはαの部分集合であり,sがフィルターlに含まれる,という意味です.∀ᶠ x in l, p x:x : αは集合ではなく,αの点を表す束縛変数です.p : α → Propに対して,p xが成り立つような点x全体の集合が, フィルターlに含まれる,という意味です. 定義上は{x : α | p x} ∈ lという主張です.Tendsto f l m:x : αがlに沿って動くとき,f xがmに沿って動く.
数式で書くと,∀ᶠ x in l, p x は
という条件です.
また,写像 \(f : X \to Y\) とフィルター \(\mathcal F\),\(\mathcal G\) について
Tendsto f l m は,次の条件に対応します.
この章で主に使うフィルターは,atTop と 𝓝 x です.
atTop は,順序集合の「上の方へ行く」ことを表すフィルターです.
自然数上では「十分大きい n」を意味します.
自然数上の部分集合 \(S \subseteq \mathbb N\) については,
と読めます.
この講義では,次の補題を atTop の定義のように読めば十分です.
lemma mem_atTop_sets :
s ∈ (atTop : Filter α) ↔ ∃ a : α, ∀ b ≥ a, b ∈ s
lemma eventually_atTop :
(∀ᶠ x in atTop, p x) ↔ ∃ a, ∀ b ≥ a, p b
特に自然数列の命題 P : ℕ → Prop について,∀ᶠ m in atTop, P m は
「ある n が存在して,n ≤ m なる任意の m について P m」という意味です.
数式で書けば,
です.
つまり,有限個の初期項を除けば P m が常に成り立つ,ということです.
一方,𝓝 x は点 x の近傍フィルターです.
s ∈ 𝓝 x は,s が x の近傍であることを意味します.
位相空間 \(X\) の点 \(x\) と部分集合 \(S \subseteq X\) については,
実際には,次の補題で読むのが便利です.
つまり,s が x の近傍であるとは,s の中に x を含む開集合 t があることです.
Tendsto f l m は,「x がフィルター l に沿って動くとき,f x がフィルター m に沿って動く」という意味です.
数列の極限も,関数の一点での極限も,無限遠での極限も,この形で表されます.
内部的には map f l ≤ m という定義ですが,まずは
「m に含まれる任意の集合の逆像は,l に含まれる」と読むのがよいです.
#check Filter
#check Tendsto
#check atTop
#check 𝓝
#check Filter.Eventually
#check mem_atTop_sets
#check eventually_atTop
#check mem_nhds_iff
section Filters
example {α : Type*} {l : Filter α} {p : α → Prop} :
(∀ᶠ x in l, p x) = ({x | p x} ∈ l) := by
rfl
example : (∀ᶠ n in (atTop : Filter Nat), 3 ≤ n) := by
exact eventually_ge_atTop 3
example {P : ℕ → Prop} :
(∀ᶠ m in (atTop : Filter ℕ), P m) ↔ ∃ n, ∀ m, n ≤ m → P m := by
exact eventually_atTop
example {s : Set ℕ} :
s ∈ (atTop : Filter ℕ) ↔ ∃ n, ∀ m, n ≤ m → m ∈ s := by
exact mem_atTop_sets
example {X : Type*} [TopologicalSpace X] {x : X} {s : Set X} :
s ∈ 𝓝 x ↔ ∃ t ⊆ s, IsOpen t ∧ x ∈ t := by
exact mem_nhds_iff
example {α β : Type*} {f : α → β} {l : Filter α} {m : Filter β} :
Tendsto f l m = (map f l ≤ m) := by
rfl
end Filters
近傍フィルターで収束と連続を読む¶
この節で使う対応は次の 2 つです.
すなわち
また,写像 \(f : X \to Y\) について
点列 u : ℕ → X が x に収束することは,次のように書きます.
これは数式では,
です. さらに,\(\mathrm{atTop}\) を
と読むと,これは通常の点列収束
と同じです.
tendsto_nhds は,この条件を開集合で読むための補題です.
theorem tendsto_nhds {a : X} {f : α → X} {l : Filter α} :
Tendsto f l (𝓝 a) ↔
∀ s, IsOpen s → a ∈ s → f ⁻¹' s ∈ l
対応する証明は,次の式変形として読めます.
まず \(U\) が \(x\) を含む開集合なら
したがって
逆向きでは,任意の \(A \in \mathcal N(x)\) に対して
仮定より
\(U \subseteq A\) なので
すなわち
一点 x での連続性も,同じ Tendsto で定義されます.
数式では,
です. 開集合で書けば,
大域的な連続性は,次の補題により「開集合の逆像が開集合」と同値になります. すなわち,
theorem continuous_def :
Continuous f ↔ ∀ s, IsOpen s → IsOpen (f ⁻¹' s)
theorem continuous_iff_continuousAt :
Continuous f ↔ ∀ x, ContinuousAt f x
この同値性の証明も,近傍の式で追えます. 各点で
が成り立つとします. \(V \subseteq Y\) が開集合なら,
よって
任意の点 \(x \in f^{-1}(V)\) で \(f^{-1}(V)\) が \(x\) の近傍なので,
逆に,
を仮定します. \(A \in \mathcal N(f(x))\) なら
このとき
したがって
これは
です.
#check tendsto_nhds
#check continuous_def
#check continuous_iff_continuousAt
section NeighborhoodFilters
example {X : Type*} [TopologicalSpace X] (x : X) : Filter X :=
𝓝 x
example {X : Type*} [TopologicalSpace X] {u : ℕ → X} {U : Set X} :
(u ⁻¹' U ∈ atTop) = (∀ᶠ n in atTop, u n ∈ U) := by
rfl
example {X : Type*} [TopologicalSpace X] (u : ℕ → X) (x : X) :
Tendsto u atTop (𝓝 x) ↔
∀ U : Set X, IsOpen U → x ∈ U → ∀ᶠ n in atTop, u n ∈ U := by
exact tendsto_nhds
example {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y]
{f : X → Y} {x : X} :
ContinuousAt f x = Tendsto f (𝓝 x) (𝓝 (f x)) := by
rfl
example {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y]
{f : X → Y} :
Continuous f ↔ ∀ x, Tendsto f (𝓝 x) (𝓝 (f x)) := by
simpa [ContinuousAt] using (continuous_iff_continuousAt (f := f))
example {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y]
{f : X → Y} :
Continuous f ↔ ∀ U : Set Y, IsOpen U → IsOpen (f ⁻¹' U) := by
exact continuous_def
example {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y]
{f : X → Y} :
(∀ x, Tendsto f (𝓝 x) (𝓝 (f x))) ↔
∀ U : Set Y, IsOpen U → IsOpen (f ⁻¹' U) := by
rw [← continuous_def]
simpa [ContinuousAt] using (continuous_iff_continuousAt (f := f)).symm
end NeighborhoodFilters
演習問題¶
Tendsto の定義を map と filter の順序として読み替えてください.