技能一覧 › 大学院数学 計算理論・ラムダ計算

単純型付けと型の数え上げ

単純型付きラムダ計算(チャーチ流)で、閉じた項に型を付けたり型付け可能かを判定したりでき、矢印型を右結合で読める。原子型が 個で矢印が 個の型の個数 のような型の個数を求められる

前提

この技能までの道筋(7 技能)
算数中学高校大学大学院

読み込み中…

右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。

一覧で見る(前提が先)
  1. β 簡約と β 正規形 (大学院数学 計算理論・ラムダ計算)
  2. 樹形図で数え上げる (算数 場合の数)
  3. 積の法則と和の法則 (算数 場合の数)
  4. 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
  5. 順列・円順列・重複順列 (数学A 場合の数と確率)
  6. 組合せ (数学A 場合の数と確率)
  7. カタラン数 (大学数学 離散数学・組合せ論)

説明

単純型付きラムダ計算では、原子型()と矢印 から型を作り、各ラムダ項に「どんな入力を受けてどんな出力を返すか」を表す型を付けます。この技能では、チャーチ流(束縛変数に型を書き込む の形)の閉じた項に型を付け、型が付かない項を見分け、 のような矢印型を右結合で正しく読めるようになります。さらに、型の形が二分木であることを使って、原子型が 個・矢印が 個の型の個数 を求められるようになります。

なぜそうしてよいのか

型は次のように帰納的に作ります:原子型は型であり、 が型なら も型である。括弧を省くときは右結合、つまり は と読みます。これは「 を受け取ると『 を受け取って を返す関数』を返す」という意味で、2 引数関数を 1 引数ずつ受け取る形に合っています。型付けの規則は 3 つです:(変数) 文脈に があれば ;(抽象) 文脈に を加えて なら ;(適用) かつ なら 。チャーチ流では束縛変数の型が書いてあるので、項の構造を外側からたどれば型は(付くなら)1 つに決まり、適用のところで「関数の入力の型」と「引数の型」が完全に一致するかを確かめれば型付け可能かが判定できます。たとえば では に型が付くために が必要ですが、右辺は左辺より矢印が 1 つ多いので決して一致せず、型は付きません。

型の個数を数えるには、型を二分木とみます。矢印 を「左の子 、右の子 をもつ内部節点」、原子型を「葉」とすると、型と「葉に原子型の名前を書いた二分木」が 1 対 1 に対応します(括弧の付け方が木の形をちょうど決めるからです)。矢印が 個の型は内部節点が 個の二分木で、その形は 通りです。内部節点 個の二分木は葉をちょうど 個もち、各葉に 個の原子型から重複を許して 1 つずつ選ぶので 通り。積の法則で、矢印 個の型は 個です。

手順

  1. 型を読むときは、省かれた括弧を右から補う:

  2. 閉じた項の型付けは外側から: なら文脈に を加えて の型 を求め、全体を とする

  3. 適用 では の型が の形で、 の型がちょうど であることを確かめ、 とする。一致しなければ型は付かない

  4. 型を数えるときは、型を「内部節点=矢印、葉=原子型」の二分木に直し、矢印の個数 と原子型の個数 を確認する

  5. 木の形の数 と葉 個へのラベルの付け方 を掛けて、個数 を求める

例題

原子型が の 2 つだけの単純型を考える。型は「原子型は型であり、 が型なら も型である」として作られるものとし、括弧の付け方が異なる型は異なる型とみなす(例: と は異なる)。矢印 をちょうど 3 個含む型の個数を求めよ。

例題の解答

【手順 4】型を二分木に直す。矢印 1 個が内部節点 1 個にあたるので、求めるものは「内部節点が 3 個の二分木で、各葉に か を書いたもの」の個数である。原子型は 個、矢印は 個。

【手順 5】木の形は 通り。実際、括弧を省かずに書くと

の 5 つである。どの形も葉( の位置)は 個あり、それぞれに のどちらかを入れるので 通り。積の法則より

答え:

よくある誤り

この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。

入口の問題

この技能を使う問題

この技能の次に学べること