このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

型理論ってば

型理論で使われる用語が特殊でしかもバラツキがあるので、「型推論に関わる論理の概念と用語 その1」あたりから少しはまとめようとしました。その後も、型理論に関する解説論文などを極めて散発的/断片的に見ているのですが、さらに、型フレーム(type frame)、型環境スキーム(typing environment scheme)、型シェープ(type shape)、型スケルトン(type skeleton)なんて言葉が出てきて、あーもうイヤ。

型フレームはモデル論に属する概念らしく、型を集合として解釈するときの“普通の”割り当てのことみたい。“普通の”とは、タプル型を集合の直積、指数型を写像の集合という具合に、多くの人が想定しているように対応付ける、という意味です。値をとる圏を集合圏から他の圏に変えれば、積や指数の意味も変わるので、順序や位相を持つ領域のモデル論も構成可能です。もっとも、集合圏以外で作ったモデルを型フレームと呼ぶかどうか分かりませんが。

型変数を含む(かもしれない)型表現(type expression, type term)を型スキーム(type scheme)と呼ぶらしいです。スキーム(scheme)とスキーマ(schema)は交換可能だったりするので、スキーマでも同義でしょう。それで、型環境スキームは、変数に型スキームを割り当てる対応のこと。型変数を含むからって特別扱いする必要があるのかな? 型環境と型環境スキームは、区別するほどのこともないような気がしますが。

型環境は、変数に型表現を割り当てる対応の意味で僕は使っているのですが、微妙に違う用法があります。型表現は構文的な概念なので、型表現に対応する存在物のほうを「型」と呼びます。それで、「変数 → 型表現」は型コンテキストと呼び、「変数 → 型」のほうを型環境と呼んで使い分ける、と。へー。めんどくせー。

でも、誰もが型表現と意味論的型を区別しているわけではありません。型を表現する構文的な形式を「型」と呼ぶと明言していることもあります。じゃ、構文とは別な型概念とは何だ? というと、そういうものは考えないのです。あるいは、エルブラン流の構成で、構文領域を意味領域に見立ててしまいます。人によっては。

型変数を含む型表現(型スキームって言うんでしたっけ?)に対して、ラムダ抽象をすると、ラムダ計算の意味で「型の関数」ができます。型変数(を表すメタ変数)はどうもギリシャ小文字が多いようなので、αを型変数として λα.T のような形です。一方、∀記号で束縛して ∀α.T とすると多相型になります。型関数も多相型も、形式上は「型表現と束縛変数の組」です。そこで、α.T のような形を考えて、それを型シェープと呼ぶことがあるようです。

んで、型スケルトは、… あれ?どこで目にしたか忘れた。もういいや。