§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。
證明計畫 · 由所求想起 正向所求是一個集合 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. 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).
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).
這張圖在說第二段證明的機制:整條線段是定義域,被同一個位置切成左右兩塊。上排的左塊是 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.
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 set 的逆像被某個 open set 切得出來,closed set 的逆像被某個 closed set 切得出來。多出來的 G₁ 是為了容納有缺口的定義域,定義域是全空間時它就消失(22.2)。例 2 提醒了反方向是錯的——連續函數把 open set 送成什麼形狀完全沒有保證。起來走一走再回來,下一篇要問的是:既然形狀保不住,那什麼保得住?