§22-1  全域連續定理

連續能不能寫成一句完全不提「點」的話?如果可以,那句話會是關於哪一側的集合——送過去的那一側,還是拉回來的那一側?兩側有沒有差別?

從逆像回頭看連續

淋浴的水龍頭轉到某個角度,水溫就落在某個度數。可是站在蓮蓬頭底下的人,心裡問的其實是反過來的問題:想讓水溫落在 38 到 40 度之間,龍頭該轉到哪些角度?

這個反過來的問題有一個值得注意的性質。如果目標溫度區間是「開」的——不含端點,也就是不要求剛好卡在 38 度或 40 度上——那麼合格的角度通常也有一段可以自由挪動的寬度:轉過頭一點點仍然合格。反過來,如果水龍頭在某個角度上會突然跳溫,那麼在那個角度附近,再小的挪動都可能把水溫甩出目標之外。

§20-1 的 20.1 把連續定義成一個點上的事:對每個 f(a) 附近的要求,都找得到 a 附近的一個範圍來滿足它。如果函數在定義域的每一點都連續,這些逐點的答案能不能一次講完?本篇的答案是可以,而且講出來的形式完全不提「點」——只提集合的 open 與 closed。

先把記號講定。設 f 的定義域 D(f) ⊆ ℝᵖ、值落在 ℝ^q。對 ℝ^q 的任意子集 B,§2-3 的 2.12 的逆像是
  f⁻¹(B) = {x ∈ D(f) : f(x) ∈ B}。
要留意兩件事:逆像永遠是定義域的子集,即使 B 有一大半落在值域之外;而 f 不必是單射,f⁻¹ 這個記號在這裡指的是「把一個集合拉回去」,不是反函數。
22.1  GLOBAL CONTINUITY THEOREM
For a function f the following three statements say the same thing.
(a)  f is continuous at every point of D(f).
(b)  To each open set G in ℝ^q there corresponds an open set G₁ in ℝᵖ with
  G₁ ∩ D(f) = f⁻¹(G).
(c)  To each closed set H in ℝ^q there corresponds a closed set H₁ in ℝᵖ with
  H₁ ∩ D(f) = f⁻¹(H).
(b) 與 (c) 完全不提「在某一點連續」,只談哪些集合的逆像長什麼樣。為什麼不直接說「f⁻¹(G) 是 open」?因為逆像被關在定義域裡,而定義域自己可能不是 open——真正成立的是「f⁻¹(G) 恰好是某個 open set 與定義域的交集」。定義域是整個 ℝᵖ 時這個顧慮消失,就是下面的 22.2。
正例:f(x) = x、D(f) = [0, 2]。取 G = (−1, ½),則 f⁻¹(G) = [0, ½)——這不是 ℝ 的 open set,可是取 G₁ = (−1, ½) 就切得出它,(b) 成立。反例:把 (b) 改成「f⁻¹(G) 本身 open」,剛才這個處處連續的函數就會被判不連續。條件裡的 G₁ 不是贅字,它是為了不對定義域額外要求。
f⁻¹ G₁ G 粗框是 D(f) 深色是逆像 值域這邊的目標 逆像 = 虛線開集 ∩ 定義域

這張圖在說 22.1(b) 為什麼要繞一個 G₁:深色那塊是逆像,它必定被關在定義域(粗框)內,所以它自己不見得是 ℝᵖ 的 open set。定理保證的是它可以被一個 open set 恰好切出來——虛線那塊就是 G₁,它可以探出定義域之外,交完之後多出來的部分自動被裁掉。

PROOF  1/2

先證 (a) 與 (b) 等價。手上唯一的工具是 20.1:對每個點、對每個輸出端的要求,各有一個輸入端的 neighborhood 回應它。

證明計畫 · 由所求想起
正向所求是一個集合 G₁,可是 20.1 只逐點交貨。既然每個點各拿到一個自己的 open set,就把它們全部聯集起來當 G₁——聯集保持 open,而且交上定義域之後不多不少。
逆向所求是「在任一點 a 連續」,也就是要交出 a 的一個 neighborhood。(b) 交來的 G₁ 剛好含 a,直接拿它當答案。

Proof.  Assume (a) and let G be open in ℝ^q. For each a ∈ f⁻¹(G) the set G is a neighborhood of f(a), so by continuity at a there is an open set U(a) containing a such that f(x) ∈ G for every x ∈ U(a) ∩ D(f). Put G₁ = ⋃ {U(a) : a ∈ f⁻¹(G)}, which is open by 9.3(c).
這一步的所求:把逐點的答案收攏成一個集合。做得到的理由是 §9-1 的 9.3(c)(任意多個 open set 的聯集仍然 open)——聯集不限個數,而這裡的 a 通常有無限多個,換成交集就完全不行。要留意 G 是 open 才使得它成為每個 f(a) 的 neighborhood(§9-3 的 9.7:neighborhood 要藏得住一個含該點的 open set),所以 20.1 才用得上。逆像若是空集,聯集就是空集,它也是 open,這一格是例行核對。
If a ∈ f⁻¹(G) then a ∈ U(a) ⊆ G₁ and a ∈ D(f), so f⁻¹(G) ⊆ G₁ ∩ D(f). Conversely, if x ∈ G₁ ∩ D(f) then x ∈ U(a) for some a, hence f(x) ∈ G and x ∈ f⁻¹(G). Therefore G₁ ∩ D(f) = f⁻¹(G), which is (b).
這一步是邊界簿記,兩個包含各驗一次。往右那一半靠「每個 a 都住在自己那塊 U(a) 裡」,往左那一半靠 U(a) 當初被挑出來時就答應過「交上定義域之後的值都落在 G 內」。聯集之所以不會多撈到不該撈的點,關鍵在於每一塊 U(a) 都各自守著同一個承諾,所以任一塊裡的定義域點都合格。
Now assume (b) and let a ∈ D(f). Let V be any neighborhood of f(a) and choose an open G ⊆ V with f(a) ∈ G. By (b) there is an open G₁ with G₁ ∩ D(f) = f⁻¹(G). Since f(a) ∈ G we get a ∈ f⁻¹(G) ⊆ G₁, so G₁ is a neighborhood of a; and x ∈ G₁ ∩ D(f) gives f(x) ∈ G ⊆ V. Hence f is continuous at a.
這一步的所求:從一個集合層級的敘述,倒推回某一個指定點上的連續。唯一需要動腦的是第一句——20.1 裡的 V 是任意 neighborhood,不一定 open,而 (b) 只吃 open set,所以先從 V 裡挖出一個含 f(a) 的 open set G 再送進去,這正是 9.7 允許的動作。之後 G₁ 兼兩職:它含 a(所以是 a 的 neighborhood),而且它交上定義域的每個點都被送進 G,也就送進了 V。
逐點的連續與集合層級的逆像條件互相推得出來。∎
PROOF  2/2

剩下 (b) 與 (c) 的等價。這一段完全不碰連續,只是把「open 的逆像」與「closed 的逆像」用取補集接起來。

證明計畫 · 由所求想起
所求是:已知某個集合的逆像被 B₁ 切得出來,要證明它的補集的逆像被 ℝᵖ ∖ B₁ 切得出來。先立一條與 open、closed 都無關的通則——把定義域拆成兩堆的方式只有一種,於是兩個拆法的第二堆必然相同。通則立好之後,(b)⟹(c) 與 (c)⟹(b) 都只是代入補集,因為取補集把 open 與 closed 互換。

Proof.  Let B ⊆ ℝ^q and C = ℝ^q ∖ B. Every point of D(f) is sent either into B or into C and not both, so
  D(f) = f⁻¹(B) ∪ f⁻¹(C),
a union of disjoint sets.
這一步的所求只有一件事:把定義域拆成兩堆。f 在每個定義域點上恰有一個值,而那個值落在 B 裡或落在補集裡,兩者必居其一且不能兼得——所以這是一個不重不漏的拆法。這一格是例行核對,可是後面整段推理都靠它。
Suppose B₁ ⊆ ℝᵖ satisfies B₁ ∩ D(f) = f⁻¹(B), and put C₁ = ℝᵖ ∖ B₁. Splitting D(f) by B₁ instead gives
  D(f) = f⁻¹(B) ∪ (C₁ ∩ D(f)),
again a disjoint union. Since the two decompositions share their first part, C₁ ∩ D(f) = f⁻¹(C).
這一步的所求:把補集那一側也算出來。同一個集合被拆成兩堆、兩次拆法的第一堆又相同,那麼第二堆只能相同——因為第二堆都等於「整個集合扣掉第一堆」。用到的只是不重不漏這個性質,若兩堆會重疊,這個推論立刻失效。舉個具體的:f(x) = x、D(f) = [0, 2]、B = (−1, ½) 時 B₁ = (−1, ½),於是
  C₁ = C = (−∞, −1] ∪ [½, ∞)。
與定義域相交時左邊那一段整個落空,剩下 C₁ ∩ D(f) = [½, 2],確實就是 C 的逆像。
Assume (b) and let H be closed in ℝ^q. Apply the above with B = ℝ^q ∖ H: by (b) the set B₁ may be taken open, so H₁ = ℝᵖ ∖ B₁ is closed and H₁ ∩ D(f) = f⁻¹(H). Because taking complements interchanges open and closed sets, the same argument with B = ℝ^q ∖ G shows that (c) implies (b).
這一步把通則兌現。兩個方向共用同一段推理,差別只在起手把哪一種集合拿去取補集——§9-2 的 9.4 說 closed 的意思就是補集 open,所以 open 與 closed 在取補集之下互換身分,一趟論證自然覆蓋兩趟。
三個敘述兩兩等價,連續於是有了三種說法:逐點的、open 的、closed 的。∎
f⁻¹(B) f⁻¹(C) 剩下的部分 剩下的部分 兩種拆法的第一堆相同,第二堆只能相同

這張圖在說第二段證明的機制:整條線段是定義域,被同一個位置切成左右兩塊。上排的左塊是 B 的逆像,下排的右塊是補集 C 的逆像。兩排各自不重不漏地蓋滿整條線段,而左塊又是同一塊,所以右塊沒有別的可能。這段推理與 open、closed 都無關,是純粹的集合帳。

22.2  COROLLARY
Suppose D(f) = ℝᵖ. Then the following are equivalent.
(a)  f is continuous on ℝᵖ.
(b)  f⁻¹(G) is open in ℝᵖ whenever G is open in ℝ^q.
(c)  f⁻¹(H) is closed in ℝᵖ whenever H is closed in ℝ^q.
定義域是整個空間時,22.1 裡那個 G₁ 消失了——因為 與整個空間取交集不改變任何集合。這個版本用起來最順手,代價是它只管定義域無缺口的函數。
正例:f(x) = x²(ℝ → ℝ)處處連續,取 G = (1, 4) 得 f⁻¹(G) = (−2, −1) ∪ (1, 2),確實 open。反例:g(x) = 1/x(定義域是 x ≠ 0)不能用這個版本,得回頭用 22.1——它的定義域本身在 ℝ 裡不是整個空間。(這裡 g 的定義域碰巧是 open,逆像也就碰巧 open,可是這是運氣,不是 22.2 給的保證。)
PROOF

全部工作已經在 22.1 做完,這裡只是把 D(f) = ℝᵖ 代進去。

Proof.  If D(f) = ℝᵖ then G₁ ∩ D(f) = G₁ for every G₁ ⊆ ℝᵖ. Hence condition (b) of 22.1 says exactly that f⁻¹(G) equals an open set, that is, that f⁻¹(G) is open; and similarly for (c).
這一格是例行核對:G₁ 本來就是 ℝᵖ 的子集,與 ℝᵖ 取交集當然還是自己。於是「存在一個 open set 切得出逆像」與「逆像自己 open」變成同一句話。值得記住的是這個等價只在定義域是全空間時成立:定義域一有缺口,那個交集就會真的裁掉東西,等號兩邊不再是同一件事。
定義域無缺口時,連續就是「open 的逆像 open」。∎
例 1逆像實測:為什麼多一個 G₁
同一個處處連續的函數,換一個定義域,逆像就不再是 open——條件裡的 G₁ 是在防什麼?
  1. 先看定義域完整的情形。f(x) = x²、D(f) = ℝ。取 open 的 G = (1, 4):要 1 < x² < 4,得 f⁻¹(G) = (−2, −1) ∪ (1, 2),是 open。取 closed 的 H = [1, 4]:得 f⁻¹(H) = [−2, −1] ∪ [1, 2],是 closed。22.2 的兩條都對上了。
  2. 再看定義域有缺口的情形。把同一條拋物線限制在 D(f) = [0, 2] 上,仍然處處連續。取 G = (−1, 1):這次 f⁻¹(G) = [0, 1)——它在 ℝ 裡不是 open,因為 0 這個點左邊沒有任何活動空間。
  3. 可是 22.1(b) 照樣成立:取 G₁ = (−1, 1),則 G₁ ∩ [0, 2] = [0, 1),剛好。G₁ 探到定義域外面去的那一段 (−1, 0) 在取交集時被裁掉,不留痕跡。
  4. 換 closed 的那一條驗一次。取 H = [4, 9]:在 [0, 2] 上要 x² ≥ 4,只有 x = 2,所以 f⁻¹(H) = {2}。取 H₁ = [2, 3](closed),交上定義域得 {2},也對上了。這裡 f⁻¹(H) 自己碰巧是 closed,可是這不是每次都會發生的事。
第 2 步那個 [0, 1) 就是 22.1 不寫成「逆像 open」的全部理由:逆像被關在定義域裡,定義域的邊界會原封傳給它。多寫一個 G₁ 之後,定理對任何定義域都成立,不必事先假設定義域 open。
[0, 1) y = 1 x = 2 y = x² 左端點沒有活動空間

這張圖在說例 1 第 2 步的畫面:目標是 y 落在 (−1, 1) 內,合格的 x 是粗線那一段。右端是空心點(x = 1 時 y = 1 不合格),左端卻是實心點,而且左邊根本沒有東西——定義域從 0 才開始。這個實心端點讓逆像在 ℝ 裡不是 open,與函數連不連續無關。

例 2連續不把 open 送成 open
22.1 講的全是逆像。順著方向送過去呢——連續函數會不會把 open set 送成 open set?
  1. 取 f(x) = 1/(1 + x²),定義域是整個 ℝ。它連續:常數函數連續(§20-1 例 1)、x² 連續(§20-3 例 5),§20-5 的 20.6 給出 1 + x² 連續,而它不取零值,同一條定理再給出商連續。
  2. 取 open 的 G = (−1, 1)。在這一段上 x² 從 0(x = 0 時取到)長到 1(取不到),所以 f(G) = (½, 1]。右端點 1 真的被取到了,而它的右邊沒有東西——這不是 open set。
  3. 換 closed 的試一次。取 H = [1, ∞),它 closed。在這一段上 f 從 ½ 一路遞減趨向 0 卻取不到,所以 f(H) = (0, ½]——不是 closed。
  4. 整個定義域一起送更極端:ℝ 在 ℝ 裡既 open 又 closed,可是 f(ℝ) = (0, 1] 兩邊都不是。
正像完全不保 open、也不保 closed,即使函數處處連續。22.1 之所以整條都用逆像寫,不是寫法上的偏好,是因為順著方向的版本是錯的。那麼連續到底保住了什麼?下一篇與再下一篇各給一個答案:連通性與緊緻性。
(−1, 1) 取得到 1 取不到 ½ 1/(1 + x²)

這張圖在說例 2 的機制:左右兩個端點都取不到,可是中間的最高點取得到,於是像集合的上端封起來、下端敞著,成了 (½, 1]。造成這件事的正是曲線在區間內部有一個頂——順著方向送過去時,內部的點可以跑到像集合的邊界上,而逆像永遠不會發生這種事。

—— 第一階段到此結束 ——

本篇把逐點的連續改寫成不提「點」的說法:open set 的逆像被某個 open set 切得出來,closed set 的逆像被某個 closed set 切得出來。多出來的 G₁ 是為了容納有缺口的定義域,定義域是全空間時它就消失(22.2)。例 2 提醒了反方向是錯的——連續函數把 open set 送成什麼形狀完全沒有保證。起來走一走再回來,下一篇要問的是:既然形狀保不住,那什麼保得住?