計算理論・ラムダ計算の問題
互いに異なる つの原子型 をもち、定数をもたない単純型付きラムダ計算(チャーチ流)を考える。矢印型は右結合()とし、 同値な項は同一視する。型
をもつ閉じた項で、η 長 β 正規形であるものの個数を求めよ。
この問題で使うもの
- 型の住人(η 長 β 正規形)の数え上げ(説明と入口の問題)
この問題を解けるようになるまで(9 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
型の住人(η 長 β 正規形)の数え上げの技能を使います。まず引数の型の数だけラムダを並べ、本体が型 の項になる形にしましょう。
ヒント 2
本体の頭は、仮定のうち結論が であるものから選びます。 と が候補で、引数には型 の項を入れます。
ヒント 3
型 の項は と の 個だけです。頭が のときは引数が つ、頭が のときは引数が つなので、それぞれの個数を積の法則で数えて足します。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
手順 1: 外側のラムダを決める。
の η 長 β 正規形の閉じた項は、 の引数の型の個数だけラムダが並んだ形
に限られ、本体 は文脈 のもとで型 をもつ η 長 β 正規形である。
手順 2: 本体の頭を選ぶ。
は原子型 をもつので、変数を頭とする適用 の形で、頭 は結論(最後の原子型)が である仮定でなければならない。仮定の結論は
- の結論は
- の結論は
- の結論は
なので、頭の候補は と の つである。
手順 3: 引数を再帰的に埋める。
引数として必要なのは型 の η 長 β 正規形である。型 は原子型なので頭の結論が でなければならず、候補は の 通り(どちらも引数をとらない)。よって型 の項は のちょうど 個である。
- 頭が のとき: ()。 はそれぞれ 通りなので、積の法則より 個。
- 頭が のとき: ()。 個。
手順 4: 合計する。
和の法則より 個である。具体的には
を本体とする 個の項であり、 同値を除いて互いに異なる。
したがって、求める個数は である。
別解
型 をもつ閉じた η 長 β 正規形は、 の形になる。ここで 、、、 で、 は文脈 の下で型 をもつ長い正規形である。
長い正規形の項は、(変数の頭) に (引数列) を適用した形で、全体の型が原子型になる。原子型 の項の頭は、結果型が である変数でなければならない。結果型が の変数は と だけである ( の型は )。
- 頭が のとき: ( は型 の項)。
- 頭が のとき: ( は型 の項)。
型 の長い正規形の項の頭は、結果型が の変数でなければならない。結果型が の変数は だけで、これらは引数をとらない。したがって型 の項は か の 2 通りである。
よって は
- : 通り
- : 通り
で合計 通り。α 同値を同一視するので、束縛変数の名前の違いは数えない。
検算: の候補を列挙すると の 6 つ。これらは相異なる β 正規形で、型 であり、これ以外の型 の正規形はない。
答えは 。