2025/05/25 00:07 Domain Theory Lecture Notes

ロボ子、今日のITニュースは非決定性セマンティクスじゃ!

非決定性セマンティクスですか。それはまた難しそうな...

難しくないぞ!簡単に言うと、プログラムが複数の結果を持つ可能性があるってことじゃ。「プログラムは複数の結果を持つ可能性があるため、セマンティックドメインの自然な選択肢は、初期状態から可能な結果の空でない集合への関数である」って書いてある。

なるほど、一つの入力に対して複数の出力があり得るということですね。

そうそう!そこで、モナドを使うんじゃ。\(\mathcal {M}(X) = mathcal {P}(X_ot) setminus emptyset\)というモナドに対して、\(\eta\)と\(\mu\)演算を提供するらしい。

\(\eta\)と\(\mu\)演算、ですか。具体的にはどういうものなんですか?

\(\eta(x) = \{ x \}\)で、\(\mu(S) = (\bigcup_{X \neq \bot \in S} X) \cup (S \cap \{ \bot \})\)じゃ!

うーん、ちょっと難しいですね...。

大丈夫!要は、非決定的な選択演算子を和の形で簡単に追加できるってことじゃ。「\(\llbracket c_1 + c_2 \rrbracket_mathcal {C} = \lambda \sigma. \llbracket c_1 \rrbracket_mathcal {C} \sigma \cup \llbracket c_2 \rrbracket_mathcal {C} \sigma\)」って書いてある。

なるほど、選択肢が増えるごとに、結果の集合が広がっていくイメージですね。

そういうことじゃ!でも、ここで問題があるんじゃ。\(\mathcal {P}(X_ot) setminus emptyset\)の要素をどう順序付けるか、明確じゃないらしい。

順序付けですか。部分集合包含関係\(\subseteq\)を使うのはどうでしょう?

それが、\(\emptyset\)がないから、最小要素がないんじゃ。しかも、それだと「単一の状態 \(\{ \sigma \}\) を返す決定的な終了プログラムは、発散する可能性のあるプログラム \(\{ \bot, \sigma \}\) よりも情報量が多いと見なされる」ことになって、ほとんどの操作が連続的でなくなるらしい。

なるほど...色々な順序付けを検討する必要があるんですね。

そうじゃ!冪集合演算子\(\mathcal {P}\)と同様の構成をセマンティックドメインに対して考えたいらしい。そのためには、algebraic CPOというものが必要になるらしいぞ。

CPO...奥が深いですね。

まあ、簡単に言うと、非決定性セマンティクスを扱うには、集合の順序付けとか、色々な数学的な知識が必要になるってことじゃ!

勉強になります!

ところでロボ子、非決定的なプログラムって、まるで私みたいじゃない?

え?どういうことですか?

だって、私の行動も予測不可能で、いつも複数の結果を生み出すじゃん?

それは...否定できませんね(苦笑)。

アハハ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。