互いに異なる つの原子型 をもち、定数をもたない単純型付きラムダ計算(チャーチ流)を考える。型は
で生成される式とし、括弧の付け方(木としての形)が異なる型や、原子型の並びが異なる型は異なる型とみなす(たとえば と は異なる型であり、 と も異なる型である)。
記号 をちょうど 個含む型の個数を求めよ。
単純型付きラムダ計算(チャーチ流)で、閉じた項に型を付けたり型付け可能かを判定したりでき、矢印型を右結合で読める。原子型が 個で矢印が 個の型の個数 のような型の個数を求められる
読み込み中…
右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
単純型付きラムダ計算では、原子型()と矢印 から型を作り、各ラムダ項に「どんな入力を受けてどんな出力を返すか」を表す型を付けます。この技能では、チャーチ流(束縛変数に型を書き込む の形)の閉じた項に型を付け、型が付かない項を見分け、 のような矢印型を右結合で正しく読めるようになります。さらに、型の形が二分木であることを使って、原子型が 個・矢印が 個の型の個数 を求められるようになります。
型は次のように帰納的に作ります:原子型は型であり、 が型なら も型である。括弧を省くときは右結合、つまり は と読みます。これは「 を受け取ると『 を受け取って を返す関数』を返す」という意味で、2 引数関数を 1 引数ずつ受け取る形に合っています。型付けの規則は 3 つです:(変数) 文脈に があれば ;(抽象) 文脈に を加えて なら ;(適用) かつ なら 。チャーチ流では束縛変数の型が書いてあるので、項の構造を外側からたどれば型は(付くなら)1 つに決まり、適用のところで「関数の入力の型」と「引数の型」が完全に一致するかを確かめれば型付け可能かが判定できます。たとえば では に型が付くために が必要ですが、右辺は左辺より矢印が 1 つ多いので決して一致せず、型は付きません。
型の個数を数えるには、型を二分木とみます。矢印 を「左の子 、右の子 をもつ内部節点」、原子型を「葉」とすると、型と「葉に原子型の名前を書いた二分木」が 1 対 1 に対応します(括弧の付け方が木の形をちょうど決めるからです)。矢印が 個の型は内部節点が 個の二分木で、その形は 通りです。内部節点 個の二分木は葉をちょうど 個もち、各葉に 個の原子型から重複を許して 1 つずつ選ぶので 通り。積の法則で、矢印 個の型は 個です。
型を読むときは、省かれた括弧を右から補う:
閉じた項の型付けは外側から: なら文脈に を加えて の型 を求め、全体を とする
適用 では の型が の形で、 の型がちょうど であることを確かめ、 とする。一致しなければ型は付かない
型を数えるときは、型を「内部節点=矢印、葉=原子型」の二分木に直し、矢印の個数 と原子型の個数 を確認する
木の形の数 と葉 個へのラベルの付け方 を掛けて、個数 を求める
原子型が の 2 つだけの単純型を考える。型は「原子型は型であり、 が型なら も型である」として作られるものとし、括弧の付け方が異なる型は異なる型とみなす(例: と は異なる)。矢印 をちょうど 3 個含む型の個数を求めよ。
【手順 4】型を二分木に直す。矢印 1 個が内部節点 1 個にあたるので、求めるものは「内部節点が 3 個の二分木で、各葉に か を書いたもの」の個数である。原子型は 個、矢印は 個。
【手順 5】木の形は 通り。実際、括弧を省かずに書くと
の 5 つである。どの形も葉( の位置)は 個あり、それぞれに のどちらかを入れるので 通り。積の法則より
答え:
矢印を左結合で読んでしまう誤り。 を と読むのは誤りで、正しくは 。たとえば の型は である。
括弧の付け方を数えずに、原子型の並べ方だけ数えてしまう誤り。矢印 個の型を 個とするのは誤りで、木の形の数を掛けて が正しい( なら ではなく )。
カタラン数の添字を葉の個数で取ってしまう誤り。葉が 個だからといって とするのは誤りで、木の形の数は内部節点(矢印)の個数 に対する である( なら形は と の 通り)。
適用で型が「だいたい合えばよい」としてしまう誤り。, のとき に型が付くのは のときだけ。たとえば は が必要だが、両辺の矢印の個数が異なるので型付け不可能である。
この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。
原子型として ただ 1 つをもち、定数をもたない単純型付きラムダ計算(チャーチ流)を考える。型は で生成される式とし、括弧の付け方(木としての形)が異なる型は異なる型とみなす。型 が住人をもつとは、型 の閉じた項(自由変数をもたない項)が存在することをいう。
矢印 をちょうど 個含む型(したがって をちょうど 個含む型)のうち、住人をもつものの個数を求めよ。
互いに異なる つの原子型 をもち、定数をもたない単純型付きラムダ計算(チャーチ流)を考える。型は
で生成される式とする。括弧の付け方(木としての形)または原子型の配置が異なる型は、異なる型とみなす。 は右結合とし、型に現れる の個数をその型の矢印数とよぶ。
型 の住人とは、型 をもつ閉項であって、 正規形かつ 長形(long normal form)であるもののこととする。住人は 同値なものを同一視して数える。
矢印数がちょうど である型のうち、住人をちょうど つだけもつ型の個数を求めよ。
原子型を ただ 1 つだけもつ単純型付きラムダ計算(チャーチ流、定数なし)を考える。型は
で生成されるものとし、括弧の付け方が異なる型は異なる型とみなす(たとえば と は異なる型である)。型 に含まれる記号 の個数を の矢印の個数という。
型 をもつ閉じた項(自由変数をもたない項)が少なくとも 1 つ存在するとき、 は住人をもつという。矢印の個数がちょうど である型のうち、住人をもつものの個数を求めよ。