計算理論・ラムダ計算の問題
互いに異なる 3 つの原子型 をもつ単純型付きラムダ計算(チャーチ流、定数なし)を考える。矢印型は右結合()とし、 同値な項は同一視する。型 の閉じた項のうち、 正規形かつ 長形(-long form)であるものを の住人とよぶ。(住人は、型 の閉じた項の 同値類と 1 対 1 に対応する。)
型
の住人の個数を求めよ。
この問題で使うもの
- 型の住人(η 長 β 正規形)の数え上げ(説明と入口の問題)
この問題を解けるようになるまで(9 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
長 正規形は の形です。外側の 5 つの変数を抽象したあと、型 の項の頭部になれる変数を考えましょう。
ヒント 2
型 を返す変数は と 、型 を返すのは だけです。 の引数は 長形なので の形になり、新しい 型の変数 が使えるようになります。
ヒント 3
の形では 、 の形では 、 です。それぞれの個数を数えて足します。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
長 正規形の形. 型 ( は原子型)の 長 正規形は
の形で、頭部 は文脈中の変数、 の型は (結果がちょうど になるまで完全に適用する)、各 は型 の 長 正規形である。したがって住人の個数は、文脈ごとに「各原子型の項の個数」を数えればよい。
外側の抽象. の住人は
で、 は文脈 での型 の 長 正規形である。
各原子型を作れる変数. 結果の型が のものは 、 のものは 、 のものは 型の変数だけである。 や の項から の項を作る変数はないので、数え上げは有限で終わる。
(1) 頭部が の場合. 、 は での型 の項。 で は型 の項、すなわち の 型変数 のいずれか。よって 通り。
(2) 頭部が の場合. で、 は型 の 長形なので 、 と書ける。 は文脈 での型 の項で、、 なので 通り。同様に も文脈 で 通り( は の中では使えない)。よって 通り。
頭部が のときは結果の型が にならないので、これで全部である。また異なる選び方は異なる正規形を与える。
したがって住人の個数は
別解
住人は ()の形。文脈は , , , 。
長形では、型 の項は頭変数が最終的に を返す変数で始まる。そのような変数は と のみ。
型 の項: 返り値が の関数型の変数はなく、 は原子型なので、 型の変数そのものだけ。文脈に 型の変数が 個あれば項は 個。
型 の項: 返り値が である変数は のみ( は を返す)。よって ( は 型の項)で、 個。
場合分け:
1. 頭が : 、。文脈の 型変数は の 2 個なので 個。
2. 頭が : 、。長形では ()で、文脈の 型変数は の 3 個なので は 個。 も同様に 9 個。よって 個。
合計 。
検算: 型項と 型項の生成規則に他の可能性(たとえば 型の変数や を返す関数)がないことを確かめた。