このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

さらに用語の整理

言葉と記号法の問題が色々とある。

型代入(type substitution, 行為とオペレータの意味がある)は構文的操作、型環境は意味論的な概念としよう。そう定義する。型環境は型評価に使う。型評価は型計算と言ってもいいが、型項を具体化して結果として具体型を求めること。

型項と名前を関係付けることは割り当て(assignment)、型のlet束縛といってもいい。代入(置換)とは違う。が、代入(置換)、割り当て、束縛はテキトーに使っているな、僕も皆んなも。区別しがたいこともあるし。

型具体化って言葉もあいまいで、具体型による型代入なのか、型環境における型評価かわからない。同値なら同値という証明が必要だ。

「いわゆる型推論」、あるいは僕が「型推論」から連想するような行為は実は不要だったような気がする -- これは前例や既存の知識にこだわり過ぎだった。従来の型推論とかはスッパリ忘れて、非対称単一化の結果を中心にすべきかも。

それと、記号法も不十分; ラムダ式で言えば λ(x∈A, y∈B).E のような形を考えているのだが、これはどうもダメで、λ(x, y:C).E のような形だろう。ここで、Cはx, yを含む(かも知れない)論理式。

「・」をアプライ演算子として、(λ(x, y:C).E)・(a, b) が許されるのは、|- C(a, b) のときに限るとする。こうすると、λ(x∈A, y∈B).E は、λ(x, y : x∈A ∧ y∈B).E の略記となる。|= (a∈A ∧ b∈B) のときに、(a, b)による代入(具体化)ができる。

ラムダ式にも同じ記法を採用すると、λ.E となる。Eにプロファイルαを添えると、λα.E と書けばいいかな。(λα.E)・ ==> α[a/x, b/y].E[a/x, b/y] という代入による具体化(型ベータ変換)ができる。このベータ変換のとき、|- C(a, b) の証明が必要となる。