表示的意味論
en: denotational semantics
概要
プログラムを数学的対象に翻訳する。
もしくは、別の言語に翻訳する。
特に関数型プログラミング言語に対する意味論として あつかわれる ことが おおい。
slogan: a program denotes a math object.
aka. 不動点意味論
cf. 領域理論
特徴
表示関数: 形式言語 → 領域
aka. 意味関数
なお、実行時の動的な意味論が欲しい なら、やはり操作的意味論が必要に なる。
複数のプログラミング言語を同一言語に翻訳することで、比較が しやすくなる。
モチベ
Yコンビネーターの意味論を考えたい。
不動点コンビネーターなので、型なしラムダ計算に しかない。
再帰するので難しい
→領域理論へ
ここでは、表示的意味論 = 領域理論
「使う」という関係だなwint.icon
用語
domain: 領域
syntax: 文法、形式言語
表示函数
e.g. 付値(命題論理)
概念
data vs process
static vs dynamic
合成性 (Compositionality)
環境
関数
再帰的定義
つまり、グラフではない
部分関数
lifting: with ⊥
領域
順序はデータ量の順序
つまり整数同士には情報量に差がない(順序が未定義)
未定義⊥が最小元
メタなラムダ抽象
table:domains
data CPO
process continuous functions (on CPO)
近似
$ \sqsubset: 意味近似順序 (semantic approximation order)
$ \bot = f_0 \sqsubseteq f_1 \sqsubseteq f_2 \sqsubseteq \ldots
概念
lazy natural numbers
葉の系列が 自然数N全体への近似に なってる。
https://www.researchgate.net/figure/1-The-poset-of-lazy-natural-numbers-where-S-denotes-the-lazy-successor-function_fig1_2306163
https://www.researchgate.net/profile/Albert-Meyer/publication/2306163/figure/fig1/AS:669388697006081@1536606110489/1-The-poset-of-lazy-natural-numbers-where-S-denotes-the-lazy-successor-function.png
具体例
toy model
PCF
ref. Programming Computable Functions - Wikipedia
資料
表示的意味論 - Wikipedia
表示的意味論 - Wikipedia
https://ncatlab.org/nlab/show/denotational+semantics
Kyoto University Research Information Repository: 表示的意味論
by 久木田水生
https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/96270/1/Tronso_35_16.pdf
表示的意味論が哲学において持ちうる重要性について考察したい
連続関数についていえばその不動点を計算する手続きがあれば、その表示的意味が取れる
Haskell/Denotational semantics - Wikibooks
対照的に、純粋関数型言語の意味はデフォルトで実行の方法から完全に独立しています。 Haskell98の言語仕様でさえ、Haskellの非正格な表示的意味論だけで規定されており、実装方法については規定されていません。
正格言語の領域は全て平坦
横内『プログラム意味論』
ref. 『プログラム意味論』(横内寛文)
Understanding Computation
Ruby のコードに翻訳してる。
Understanding Computation
#意味論 #計算機科学 #形式論理学