§9-4  ℝ 上開集的長相

ℝ 的開集可以多複雜?任意多段開區間的聯集都是 open,那反過來呢——每個 ℝ 的 open set 都拆得成開區間的聯集嗎?需要幾段?

ℝ 上開集的長相

市政府公告道路施工:中山路 3 號到 7 號封閉、民生路 12 號到 15 號封閉⋯⋯一張清單列下來,再亂的封路方案都只是「有限多段路」的組合。數線上的 open set 讓人想問同一個問題:它可以亂到什麼地步?(0, 1) 是一段;(0, 1) ∪ (2, 3) 是兩段;那有沒有 open set 亂到根本不是「一段一段」拼出來的?

本篇的答案乾脆得出乎意料:沒有。ℝ 上隨便哪個 open set,都是「一段一段」的聯集——而且段數至多可數多段。這是一維專屬的奢侈:ℝ² 的 open set 就沒有這麼整齊的清單(圓盤拼不成有限或可數多個「開矩形」的不重疊聯集這麼簡單的形狀——高維的世界亂得多)。

9.11  THEOREM
A subset of ℝ is open exactly when countably many open intervals of ℝ suffice to write it as their union.
ℝ 的子集為 open 的充要條件:它是可數多個開區間的聯集。
正例:⋃ₙ (n, n + 1/2)——可數多段開區間,聯集是 open。正例二:連 (0, 1) 挖掉全部 1/n 剩下的集合這種碎法,照樣拆得成可數多段 (1/(n+1), 1/n)。反例:[0, 1) 不是任何開區間聯集——含 0 的開區間必伸進負數,而 [0, 1) 一個負數也沒有;它也果然不 open。
PROOF

「⟸」是舊帳:開區間是 open(§9-1 例 2 的配球),可數多個 open sets 的聯集是 open(定理 9.3(c),任意族都行、可數族當然行)。以下證「⟹」:任給非空的 open set G ⊆ ℝ,把它拆成可數多段開區間(G = ∅ 時取空族即可)。

證明計畫 · 由所求想起
要證:G 寫得成可數多個開區間的聯集。
⇢ 「可數多個」去哪找?找 G 裡的有理數當錨點——ℚ 可數(§3-2 例 4,依據定理 3.4),錨點至多可數多個。
⇢ 每個錨點配一段「以它為心、儘量收斂」的開區間,全部留在 G 內。
⇢ 驗收:G 的每個點都被某段錨點區間接住——靠有理數的稠密(6.10)。
Proof.  List the rational numbers lying in G as r₁, r₂, r₃, ⋯ — a countable list, because ℚ is countable and subsets of countable sets are countable (Theorems 3.3, 3.4). For each n, let mₙ be the smallest natural number for which the interval Jₙ = (rₙ − 1/mₙ, rₙ + 1/mₙ) lies inside G; such an m exists because G is open and rₙ ∈ G. Then every Jₙ ⊆ G, hence ⋃ₙ Jₙ ⊆ G.
先架好可數的骨幹。G 裡的有理數是 ℚ 的子集,因為 ℚ 可數(§3-2 例 4,定理 3.4 的主秀)而可數集的子集仍可數(定理 3.3),這批錨點排得成一列 r₁, r₂, ⋯。接著替每個錨點配區間:因為 G 是 open,rₙ 配得到某顆留在 G 內的球,也就是「半徑 1/m 的區間 ⊆ G」這件事至少對某個 m 成立;良序性讓我們取最小的那個 m,記作 mₙ。取最小不是潔癖——待會的收尾正要靠「mₙ 不能再小」這句話反將一軍。每段 Jₙ 都在 G 內,聯集自然也在。
Conversely, take any x ∈ G. Since G is open, there is m ∈ ℕ with (x − 2/m, x + 2/m) ⊆ G. By the density of the rationals, some rational y lies in (x − 1/m, x + 1/m); then y ∈ G, so y = rₙ for some n.
反方向要證 G 的每個點都被某段 Jₙ 接住。任取 x ∈ G,先替它預留雙倍的空間:取 m 使 (x − 2/m, x + 2/m) ⊆ G——之所以拿 2/m 而不是 1/m,是替下一步「從錨點看世界」預付的裕度。再由有理數的稠密性(任兩個相異實數之間必有有理數——§6-4 的 6.10),在 x 的 1/m 範圍內撈到一個有理數 y——它落在 G 裡,所以它是錨點名單上的某個 rₙ。
We claim x ∈ Jₙ. If not, then 1/mₙ ≤ |x − rₙ| < 1/m, so m < mₙ. But the interval (rₙ − 1/m, rₙ + 1/m) lies inside (x − 2/m, x + 2/m) ⊆ G, because every point within 1/m of rₙ is within 1/m + 1/m = 2/m of x. Thus m already qualifies in the definition of mₙ — contradicting the minimality of mₙ. Hence x ∈ Jₙ, and G ⊆ ⋃ₙ Jₙ. The two inclusions give G = ⋃ₙ Jₙ: a union of countably many open intervals.∎
收尾用反證把 x 塞進 Jₙ。假設 x ∉ Jₙ,意思是 x 離錨點 rₙ 至少 1/mₙ;而 y = rₙ 是在 x 的 1/m 內撈到的,兩件事夾出 1/mₙ ≤ |x − rₙ| < 1/m,也就是 m < mₙ。可是從 rₙ 出發、半徑 1/m 的區間,整段都落在 x 的 2/m 範圍內(三角不等式:離 rₙ 不到 1/m、rₙ 又離 x 不到 1/m,兩段相加不到 2/m)——而那整片預留區都在 G 裡。於是「半徑 1/m 的區間 ⊆ G」對 rₙ 成立,比 mₙ 更小的 m 就合格了——與 mₙ 是最小的矛盾。所以 x ∈ Jₙ:每個 G 的點都被自己附近的錨點區間接住,雙向包含合攏,G 恰是可數多段開區間的聯集。
G x rₙ Jₙ x 的 2/m 預留區 錨點 rₙ 在 x 的 1/m 內,區間 Jₙ 接住 x

這張圖在證收尾那步反證的幾何:x(黑點)預留了 2/m 的空間(虛線),錨點 rₙ(紅點)在 1/m 內;若 Jₙ(藍段)竟接不住 x,表示它的半徑比 1/m 還小——可是半徑 1/m 的區間明明整段落在預留區內、合法得很,「最小半徑」就被戳穿了。

ℝ 的 open set 全數拆得成可數多段開區間——一維開集的完整結構清單。∎
兩筆帳與一個推論:① 本證明引用了 §6-4 的稠密性(6.10)。② 順手的推論:把本定理用在補集上——𝒞(F) 拆成可數段開區間 ⋃ₙ Jₙ,取補得 F = ⋂ₙ 𝒞(Jₙ)——ℝ 的 closed set 都是「可數多個 closed sets 的交集」,其中每個 𝒞(Jₙ) 是至多兩條閉射線的聯集。小心一個誘人的錯誤說法:「closed set 都是可數多個閉區間的交集」——不對,區間們的交集仍是區間,而 {0, 1} 是 closed 卻不是區間。另一頭「可數多個閉區間的聯集」也不一定 closed——⋃ₙ [1/n, 1] = (0, 1] 這個 §9-2 篇末的老朋友就是反例。
—— 第四階段到此結束,整個 §9 收工 ——

回望一整節:open 與 closed 兩張身分證(9.1、9.4)、各自的試金石與存續規則(9.3、9.6)、內邊外三分法與兩條免翻補集的判準(9.9、9.10),最後是 ℝ 上開集的完整結構(9.11)。下一節 §10 把舞台換成 ℝᵖ 的箱子:Nested Cells 與 Bolzano-Weierstrass 兩件重量級工具登場,「熱鬧的位置」——cluster point——也在那裡正式定義。整節走完,起身出去走一圈、補個水再回來。臨走前一則:(0, 1) 問 [0, 1] 為什麼總是那麼淡定,[0, 1] 說——「因為我把界線都收在自己手上。」

下一幕預告

§10 把舞台從「集合」換成「箱子」:ℝᵖ 的 cell 立成正式定義,Nested Cells 定理把 ℝ 的完備性整包抬上高維,而「不管圈縮到多小都撈得到別人」的位置——cluster point——會在那裡拿到正式身分,順手給 closed 補上第二條免翻補集的判準。壓軸是 Bolzano-Weierstrass:bounded 加無限,聚點就非出現不可。本節的 open ball、closed set、9.9 的三種說法都會原封上場。