Think Proof, Count Two

and look for a red shoe

最近、『プログラム意味論』(著・横内寛文)をのんびり読み進めている。 3章2節の練習問題で少し悩んだので備忘録変わりに残しておく。

用語

用語は基本的に上述の『プログラム意味論』のものに従う。 ただ、参照するのが面倒なので基本的な定義をここに書き写しておく1。

dcpo

(D,≤)(D, \leq) を半順序集合とする。

X⊂DX \subset D が有向であるとは、任意の a,b∈Xa, b \in X に対して適当な元 x∈Xx \in X が存在して a≤xa \leq x かつ b≤xb \leq x を満たすときをいう。

DD の任意の有向部分集合 X⊂DX \subset D について、上限 sup⁡X∈D\sup X \in D が存在するとき、DD を dcpo (directed-complete poset) という。

半順序集合 DD の部分集合 AA に対し、 ↑A≔{d∈D∣∃a∈A s.t. a≤d} \uparrow A \coloneqq \{ d \in D | \exists a \in A \text{ s.t. } a \leq d \} および ↓A≔{d∈D∣∃a∈A s.t. d≤a} \downarrow A \coloneqq \{ d \in D | \exists a \in A \text{ s.t. } d \leq a \} と書く。 特に一点集合 A={a}A = \{a\} に対して ↑a=↑{a}\uparrow a = \uparrow \{a\} のように略記する。

Scott 位相

DD を dcpo とする。 DD に次のように位相を定める。すなわち U⊂DU \subset D が開集合であるのは次の条件を満たすときとする:

  1. ↑U=U\uparrow U = U2,
  2. 任意の有向部分集合 X⊂DX \subset D について、sup⁡X∈U\sup X \in U ならば X∩U≠∅X \cap U \neq \emptyset

実際、このように定義すると {U}\{U\} は位相空間の公理を満たす3。 このような位相を Scott 位相という。

補題

DD を dcpo とする。 任意の d∈Dd \in D について、Ud≔D∖↓dU_{d} \coloneqq D \setminus \downarrow d は Scott open である。

Proof.

まず ↑Ud=Ud\uparrow U_d = U_d を示す。 任意に u∈↑Udu \in \uparrow U_d を取る。 このとき、適当な t∈Udt \in U_d が存在して t≤ut \leq u である。 t∉↓xt \notin \downarrow x より u∉↓xu \notin \downarrow x でなければならず、したがって u∈Udu \in U_d である。

X⊂DX \subset D を有向部分集合であって sup⁡X∈Ud\sup X \in U_d であるものとする。 このとき X⊄↓dX \not\subset \downarrow d である( 実際 X⊂↓dX \subset \downarrow d とすると sup⁡X≤d\sup X \leq d となり、sup⁡X∈Ud\sup X \in U_d と矛盾してしまう)。 したがって適当な x∈Xx \in X が取れて x∉↓dx \notin \downarrow d となり、 すなわち x∈X∩Ud≠∅x \in X \cap U_d \neq \emptyset がわかる。

以上より UdU_d は Scott open である。

問題

dcpo の間の写像 f ⁣:D→D′f \colon D \to D' について、以下は同値:

  1. ff は(Scott 位相について)連続写像
  2. 任意の有向部分集合 XX について f(sup⁡X)=sup⁡f(X)f(\sup X) = \sup f(X) が成り立つ

Proof.

2.  ⟹  1.2. \implies 1. は簡単なので、1.  ⟹  2.1. \implies 2. のみ示す。

まず ff の単調性を示す。 a,b∈Da, b \in D で a≤ba \leq b なる元を任意に取る。 f(a)≰f(b)f(a) \not\leq f(b) を仮定して矛盾を導く。 いま f(a)≰f(b)  ⟺  f(a)∈Vb≔D′∖↓f(b)  ⟺  a∈Ub≔f−1(Vb) f(a) \not\leq f(b) \iff f(a) \in V_b \coloneqq D' \setminus \downarrow f(b) \iff a \in U_b \coloneqq f^{-1}(V_b) である。 仮定より ff は連続であるから UbU_b は Scott open で、特に ↑Ub=Ub\uparrow U_b = U_b となる。 ここで a≤ba \leq b より b∈Ubb \in U_b であるが、f(b)∈Vbf(b) \in V_b となり矛盾。 したがって ff は単調である。

さて X⊂DX \subset D を有向部分集合としよう。 ff は単調であるので sup⁡f(X)≤f(sup⁡X)\sup f(X) \leq f(\sup X) は明らか。 逆向きの不等号を示す。 f(sup⁡X)≰sup⁡f(X)f(\sup X) \not\leq \sup f(X) を仮定すると f(sup⁡X)∈V≔D′∖↓sup⁡f(X) f(\sup X) \in V \coloneqq D' \setminus \downarrow \sup f(X) となり、したがって sup⁡X∈U≔f−1(V)\sup X \in U \coloneqq f^{-1}(V) となる。 仮定より ff は連続であるから UU は Scott open である。 いま X∩U≠∅X \cap U \neq \emptyset であるから元 x∈X∩Ux \in X \cap U を任意に一つとる。 このとき f(x)∈f(X)∩f(U)⊂V f(x) \in f(X) \cap f(U) \subset V であり、したがって f(x)∉↓sup⁡f(X)f(x) \notin \downarrow \sup f(X) となる。 これは上限の定義に矛盾する。 証明終わり

Footnotes

  1. 定義の細かい箇所が本とは異なるので注意。 ↩

  2. 一般に ↑U⊃U\uparrow U \supset U であることに注意。 ↩

  3. これは簡単。 ↩