SlideShare a Scribd company logo
1 of 60
Download to read offline
輪講 — 論理と計算のしくみ
5.3 型付きλ計算 (前半)
伊奈 林太郎 (id:tarao)
京都大学 大学院情報学研究科
2012-01-26
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 1
参考文献
萩谷, 西崎.
論理と計算のしくみ.
岩波書店, 2007.
J. C. Mitchell.
Foundations for Programming Languages.
MIT Press, 1996.
B. C. Pierce.
Types and Programming Languages.
MIT Press, 2002.
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 2
型理論のアイディア
(λx.xx)(λx.xx)
◮ x は関数のはず
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
型理論のアイディア
(λxA→B
.xx)(λx.xx)
◮ x は関数のはず
数学のように A → B の関数だと思ってみる
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
型理論のアイディア
(λxA→B
.xx)(λx.xx)
◮ x は関数のはず
数学のように A → B の関数だと思ってみる
◮ 受け取るのは集合 A の要素
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
型理論のアイディア
(λxA→B
.xx)(λx.xx)
◮ x は関数のはず
数学のように A → B の関数だと思ってみる
◮ 受け取るのは集合 A の要素
◮ 渡しているのは関数 A → B (A × B の部分集合)
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
型理論のアイディア
(λxA→B
.xx)(λx.xx)
◮ x は関数のはず
数学のように A → B の関数だと思ってみる
◮ 受け取るのは集合 A の要素
◮ 渡しているのは関数 A → B (A × B の部分集合)
◮ A → B ∈ A なの? おかしくね?
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
型理論のアイディア
(λxA→B
.xx)(λx.xx)
◮ x は関数のはず
数学のように A → B の関数だと思ってみる
◮ 受け取るのは集合 A の要素
◮ 渡しているのは関数 A → B (A × B の部分集合)
◮ A → B ∈ A なの? おかしくね?
⇒ 実際おかしいから無限ループする
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
型理論のアイディア
(λxA→B
.xx)(λx.xx)
◮ x は関数のはず
数学のように A → B の関数だと思ってみる
◮ 受け取るのは集合 A の要素
◮ 渡しているのは関数 A → B (A × B の部分集合)
◮ A → B ∈ A なの? おかしくね?
⇒ 実際おかしいから無限ループする
おかしいものを排除すれば
無限ループしないのでは?
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
型理論 [1/3] は抽象的な枠組
型を付ける
◮ 式の使われ方に応じて種類分けする
◮ この種類のことを型と呼ぶ
型の整合性
◮ 型の付け方は整合していないといけない
◮ 同じ式を異なる型として使ってはダメ等
整合性による恩恵
◮ 使われ方が整合しているので
おかしなことが起きない
◮ ということを数学的に証明できる
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 4
型理論 [2/3] の具体例
何を型だと思うか
◮ 関数, 変数の別
◮ メモリ, プロセス, ロックなどの情報
◮ セキュリティ上のアクセスレベル
◮ エスケープ, エンコードされているかどうか
防げるおかしなこと
◮ 無限ループ, 関数以外の適用
◮ メモリリーク, デッドロック
◮ 情報漏洩
◮ XSS, 文字化け
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 5
型理論 [3/3] は魔法ではない
ただし制限もある
◮ 単純型付 λ 計算は再帰関数を一切書けない
(ループ禁止だから無限ループしないのは当然)
制限を緩めるには
◮ 複雑にして頑張る
◮ G¨odel の System T, Coq
◮ 部分型, 多相型, 依存型
◮ プログラムの一部にだけ性質を保証する
◮ OCaml の let rec
◮ Gradual Typing
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 6
単純型付きλ計算
◮ 型の整合性 (a), (b)
◮ 型
◮ 型付け
◮ 性質 1 — 型保存性 (c)
◮ 代入補題
◮ 主部簡約定理
◮ 性質 2 — 正規化可能性 (d)
◮ 論理関係
◮ 強正規化可能性
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 7
単純型付きλ計算
◮ 型の整合性 (a), (b)
◮ 型
◮ 型付け
◮ 性質 1 — 型保存性 (c)
◮ 代入補題
◮ 主部簡約定理
◮ 性質 2 — 正規化可能性 (d)
◮ 論理関係
◮ 強正規化可能性
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 8
型
基本型 (α, β, γ)
◮ プリミティブな型 (int とか)
◮ どんなものがあるかは予め定めておく
単純型 (A, B, C)
A ::= α | A → A
単純型に含めることもある
A ::= α | A → A | A × A | A + A
→ 右結合
×, + 左結合
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 9
型付け [1/2]
各変数の型は固定
xA
と書く
型判断
⊢ M : A 「M の型は A」
型付け規則
⊢ xA
: A
⊢ M : B
⊢ λxA
.M : A → B
⊢ M : A → B ⊢ N : A
⊢ MN : B
⊢ M : A ⊢ N : B
⊢ (M, N) : A × B
⊢ L : A × B
π1(L) : A
⊢ L : A × B
π2(L) : B
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 10
型付け [2/2] — 型の整合性
M は型が付く (M is well-typed)
◮ 型付け規則で ⊢ M : A が導ける
型が付かない例
λxA
.xA
xA
型付けの一意性
◮ 各変数の型が固定なら型付けは一意
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 11
単純型付きλ計算
◮ 型の整合性 (a), (b)
◮ 型
◮ 型付け
◮ 性質 1 — 型保存性 (c)
◮ 代入補題
◮ 主部簡約定理
◮ 性質 2 — 正規化可能性 (d)
◮ 論理関係
◮ 強正規化可能性
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 12
型保存性 — 示したいこと
◮ 最終的には「型が付けば○○」と言いたい
◮ 「○○」は正規化等 →β に関すること
◮ →β の前後で型の付き方は変わらないでほしい
Theorem (主部簡約定理 (subject reduction))
⊢ M : A かつ M →β N ならば ⊢ N : A
Theorem (関係 R で一般化版)
⊢ M : A かつ M →β N ならば, ⊢ N : B かつ
BRA.
◮ 上は R が = の場合の話
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 13
単純型付きλ計算
◮ 型の整合性 (a), (b)
◮ 型
◮ 型付け
◮ 性質 1 — 型保存性 (c)
◮ 代入補題
◮ 主部簡約定理
◮ 性質 2 — 正規化可能性 (d)
◮ 論理関係
◮ 強正規化可能性
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 14
代入補題 [1/2]
Lemma (代入補題)
⊢ M : A かつ xB
かつ ⊢ N : B ならば
⊢ M[x := N] : A.
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 15
代入補題 [2/2] — 証明 [1/3]
証明: M の構造に関する帰納法による
◮ M = y のとき
◮ y = x の場合
1 型付け規則と y = x から ⊢ yB
: B
2 ⊢ M : A なので B = A
3 M[x := N] = N
4 補題の前提条件と B = A より ⊢ N : A
◮ y = x の場合
1 型付け規則から yA
のはず
2 M[x := N] = y
3 変数の型付け規則を使って ⊢ yA
: A
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 16
代入補題 [2/2] — 証明 [2/3]
証明: M の構造に関する帰納法による
◮ M = M1M2 のとき
1 型付け規則から ⊢ M1 : C → A かつ ⊢ M2 : C
2 IH より ⊢ M1[x := N] : C → A
3 IH より ⊢ M2[x := N] : C
4 M1[x := N]M2[x := N] = (M1M2)[x := N]
5 適用の型付け規則を使って
⊢ (M1M2)[x := N] : A
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 17
代入補題 [2/2] — 証明 [3/3]
証明: M の構造に関する帰納法による
◮ M = λyA1
.L のとき
1 型付け規則から A = A1 → A2 かつ ⊢ L : A2
2 λzA1
.L[y := z] =α λyA1
.L とできるので
y = x かつ y は N に自由に出現しないとして
も一般性を失わない
3 λyA1
.L[x := N] = (λyA1
.L)[x := N]
4 IH より ⊢ L[x := N] : A2
5 抽象の型付け規則を使って
⊢ (λyA1
.L)[x := N] : A1 → A2
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 18
単純型付きλ計算
◮ 型の整合性 (a), (b)
◮ 型
◮ 型付け
◮ 性質 1 — 型保存性 (c)
◮ 代入補題
◮ 主部簡約定理
◮ 性質 2 — 正規化可能性 (d)
◮ 論理関係
◮ 強正規化可能性
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 19
主部簡約定理 [1/2]
Theorem (主部簡約定理 (subject reduction))
⊢ M : A かつ M →β N ならば ⊢ N : A
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 20
主部簡約定理 [2/2] — 証明 [1/2]
証明: M →β N の導出に関する帰納法による
◮ Beta のとき
1 M = (λxB
.M1)M2 →β M1[x := M2] = N
2 型付け規則から ⊢ M1 : A かつ ⊢ M2 : B
3 代入補題より ⊢ M1[x := M2] : A
◮ Lam のとき
1 M = λxB
.L →β λxB
.L′
= N かつ L →β L′
2 型付け規則から A = B → C かつ ⊢ L : C
3 IH より ⊢ L′
: C
4 抽象の型付け規則を使って ⊢ λxB
.L′
: B → C
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 21
主部簡約定理 [2/2] — 証明 [2/2]
証明: M →β N の導出に関する帰納法による
◮ AppL のとき
1 M = M1M2 →β M′
1M2 = N かつ M1 →β M′
1
2 型付け規則から ⊢ M1 : B → A かつ ⊢ M2 : B
3 IH より ⊢ M′
1 : B → A
4 適用の型付け規則を使って ⊢ M′
1M2 : A
◮ AppR のとき
1 M = M1M2 →β M1M′
2 = N かつ M2 →β M′
2
2 型付け規則から ⊢ M1 : B → A かつ ⊢ M2 : B
3 IH より ⊢ M′
2 : B
4 適用の型付け規則を使って ⊢ M1M′
2 : A
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 22
単純型付きλ計算
◮ 型の整合性 (a), (b)
◮ 型
◮ 型付け
◮ 性質 1 — 型保存性 (c)
◮ 代入補題
◮ 主部簡約定理
◮ 性質 2 — 正規化可能性 (d)
◮ 論理関係
◮ 強正規化可能性
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 23
やりたいこと [1/4]
すべての無限ループを
生まれる前に消し去りたい
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 24
やりたいこと [2/4]
(λx.xx)(λx.xx)
◮ 「型が付いたら無限ループしない」と言いたい
◮ 上の例に限れば型が付かないことは既に見た
◮ 止まらない項すべてに関して示すには?
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 25
やりたいこと [2/4]
(λx.xx)(λx.xx)
◮ 「型が付いたら無限ループしない」と言いたい
◮ 上の例に限れば型が付かないことは既に見た
◮ 止まらない項すべてに関して示すには?
◮ そもそも「無限ループ」って何?
◮ 無限簡約列があること
◮ 評価戦略によってあったりなかったり
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 25
やりたいこと [3/4] — 定義 [1/2]
β 正規形
M ∈ NFβ ⇐⇒ M は β 簡約で正規形
β 正規形への有限簡約
M ⇓β N ⇐⇒
M = M0 →β M1 →β · · · →β Mn = N ∈ NFβ
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 26
やりたいこと [3/4] — 定義 [2/2]
Definition (弱正規化可能)
型の付いた項 M に対して, ある N が存在して
M ⇓β N.
◮ 有限簡約列が少なくとも 1 つあるということ
◮ うまい評価戦略では止まるということ
Definition (強正規化可能 SN)
型の付いた項 M に対して, M から始まる無限簡約
列 M →β M1 →β M2 →β · · · が存在しない.
◮ どんな評価戦略でも止まるということ
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 27
やりたいこと [4/4]
評価戦略を固定した場合の正規化可能性
◮ 簡約列は一通りしかない
◮ 弱正規化可能 ⇐⇒ 強正規化可能
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 28
やりたいこと [4/4]
評価戦略を固定した場合の正規化可能性
◮ 簡約列は一通りしかない
◮ 弱正規化可能 ⇐⇒ 強正規化可能
でもせっかくなので一般の場合で証明
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 28
勘所 [1/2]
帰納法で証明できる?
◮ M, N がともに SN のとき MN は SN?
◮ M = λx.xx と N = λx.xx はともに SN
◮ Ω = MN なので適用すると SN ではない
◮ M, N は型が付かないから大丈夫では?
◮ 危険な項すべて型が付かないと言えれば OK
◮ 「危険な項は型が付かない」こそが強正規化性
⇒ 堂々巡り
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 29
勘所 [2/2]
問題点の分析
◮ M = λx.xx 自体は SN でも MN は SN でない
◮ 組み合わせると止まらない項は除外したい
組み合わせても止まる項
◮ M が “止まる項” である条件: MN も “止まる項”
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 30
証明方法
1 “止まる項” を項の形で見分ける
◮ 制限された形の項はすべて SN
◮ どんな項も制限された項に変換できる
◮ 型付き項なら変換が SN を保存する
2 “止まる項” を帰納的に集める
◮ 集めた項全体 = 型付き項全体を示す
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 31
証明方法
1 “止まる項” を項の形で見分ける
◮ 制限された形の項はすべて SN
◮ どんな項も制限された項に変換できる
◮ 型付き項なら変換が SN を保存する
2 “止まる項” を帰納的に集める
◮ 集めた項全体 = 型付き項全体を示す
今回は2つ目の方法
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 31
証明の流れ
1 “止まる項” であることを表す述語を定義
2 “止まる項” の性質を証明
◮ 変数は “止まる”
◮ “止まる項” は →β しても “止まる”
◮ →β して “止まる” なら元の項も “止まる”
◮ ただし元の項の形を制限
3 すべての型付き項は “止まる”
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 32
単純型付きλ計算
◮ 型の整合性 (a), (b)
◮ 型
◮ 型付け
◮ 性質 1 — 型保存性 (c)
◮ 代入補題
◮ 主部簡約定理
◮ 性質 2 — 正規化可能性 (d)
◮ 論理関係
◮ 強正規化可能性
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 33
論理関係 [1/6] — 定義
述語 RA
⊢ M : α M は SN
Rα(M)
⊢ M : A → B M は SN
∀N.RA(N) ⇒ RB(MN)
RA→B(M)
◮ RA を満たす項は明らかに SN
◮ RA を満たす項の集合と
型 A の項全体の集合が一致すればよい
◮ cbv に固定するなら
「M は SN」の代わりに「M ⇓cbv
∃
N」
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 34
論理関係 [2/6] — 補題5.16 [1/2]
Lemma (5.16)
0 ≤ i ≤ n.RAi
(Mi) ならば
RA(xA1→···→An→A
M1 · · · Mn).
◮ 大雑把には RA(xA
) が成り立つということ
◮ “止まる項” の条件を反映した強い形
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 35
論理関係 [2/6] — 補題5.16 [2/2]
証明: 型 A の構造に関する帰納法
1 RAi
(Mi) より Mi は SN
2 xA1→···→An→A
M1 · · · Mn は明らかに SN
3 RAi
(Mi) より ⊢ Mi : Ai
4 型付け規則より ⊢ xA1→···→An→α
M1 · · · Mn : A
5 ◮ A = α のとき
◮ ただちに RA(xA1→···→An→A
M1 · · · Mn)
◮ A = B → C のとき
1 任意の RB(N) なる N について
2 IH より RC(xA1→···→An→B→C
M1 · · · MnN)
3 ゆえに RB→C(xA1→···→An→B→C
M1 · · · Mn)
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 36
論理関係 [3/6] — 補題5.15 [1/3]
Lemma (5.15’)
M →β M′
のとき RA(M) ならば RA(M′
)
◮ ⇐= は成り立たない
(反例: M = (λxy.y)(λz.Ω) →β λy.y = M′
)
◮ ⇐= なしでもこの後の証明は可能
◮ 教科書は ⇐= も成り立つと書いてあるので誤り
◮ →cbv では ⊢ M : A を前提に加えれば OK [3]
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 37
論理関係 [3/6] — 補題5.15 [2/3]
証明: 型 A の構造に関する帰納法
◮ A = α のとき
1 Rα(M) かつ M →β M′
2 Rα(M) より ⊢ M : α かつ M は SN
3 M′
は SN(さもないと M が SN でなくなる)
◮ cbv では簡約の一意性をここで使う
4 主部簡約定理より ⊢ M′
: α
5 よって Rα(M′
)
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 38
論理関係 [3/6] — 補題5.15 [3/3]
証明: 型 A の構造に関する帰納法
◮ A = B → C のとき
1 RB→C(M) かつ M →β M′
2 N を RB(N) を満たす項とする
3 RB→C(M) より RC(MN)
4 MN →β M′
N なので IH より RB(M′
N)
5 RB(M′
N) なので M′
N は SN
6 M′
は SN(さもないと M′
N が SN でなくなる)
7 主部簡約定理より ⊢ M′
: B → C
8 よって RB→C(M′
)
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 39
論理関係 [4/6] — 補題5.17a [1/2]
Lemma (5.17a)
⊢ M0 : A1 → · · · An → α かつ RB(L), RAi
(Ni) か
つ Rα(M0[xB
:= L]N1 · · · Nn) ならば
Rα((λxB
.M0)LN1 · · · Nn).
◮ 教科書には無い補題
◮ (λxB
.M0)LN1 · · · Nn を (λxB
.M0)LN と略記
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 40
論理関係 [4/6] — 補題5.17a [2/2]
証明
1 RB(L), RAi
(Ni) より ⊢ L : B, ⊢ Ni : Ai
2 型付け規則を使って ⊢ (λxB
.M0)LN : α
3 RB(L), RAi
(Ni) より L, Ni は SN
4 Rα(M0[xB
:= L]N) より M0[xB
:= L]N は SN
5 M0, λxB
.M0 も SN(さもないと矛盾)
6 M0 →∗
β M′
0, L →∗
β L′
, Ni →∗
β N′
i なる
任意の M′
0, L′
, N′
i について
◮ M′
0[x := L′
]N′ は SN
◮ (λxB
.M0)LN →∗
β M′
0[x := L′
]N′ は有限簡約
7 なので (λxB
M0)LN も SN
8 ゆえに Rα((λxB
.M0)LN)
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 41
論理関係 [5/6] — 補題5.17b [1/3]
Lemma (5.17b)
⊢ M0 : A1 → · · · An → A かつ RB(L), RAi
(Ni) か
つ RA(M0[xB
:= L]N1 · · · Nn) ならば
RA((λxB
.M0)LN1 · · · Nn)
◮ 教科書には無い補題
◮ 補題 5.17a の型 α が A に一般化されたもの
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 42
論理関係 [5/6] — 補題5.17b [2/3]
証明: 型 A に関する帰納法
◮ A = α のとき
◮ 補題 5.17a より OK
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 43
論理関係 [5/6] — 補題5.17b [3/3]
証明: 型 A に関する帰納法
◮ A = C1 → C2 のとき
1 M1 を RC1
(M1) を満たす任意の項とする
2 RC1→C2
(M0[x := L]N) より
◮ ⊢ M0[x := L]N : C1 → C2
◮ RC2
(M0[x := L]NM1)
3 IH より RC2
((λxB
.M0)LNM1)
◮ ⊢ (λxB
.M0)LNM1 : C2
◮ (λxB
.M0)LNM1 は SN
4 主部簡約補題より ⊢ (λxB
.M0)LN : C1 → C2
5 (λxB
.M0)LN も SN
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 44
論理関係 [6/6] — 補題5.17 [1/4]
Lemma (5.17)
⊢ M : A かつ RA1
(N1), . . . , RAn
(Nn) ならば
RA(M[xA1
1 := N1, . . . , xAn
n := Nn]).
◮ xA1
1 := N1, . . . , xAn
n := Nn を x := N と書く
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 45
論理関係 [6/6] — 補題5.17 [2/4]
項 M の構造に関する帰納法
◮ M = xi のとき
1 M[x := N] = Ni
2 RAi
(Ni) なので成立
◮ M = y = xi のとき
1 M[x := N] = yA
2 補題 5.16 より成立
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 46
論理関係 [6/6] — 補題5.17 [3/4]
項 M の構造に関する帰納法
◮ M = M1M2 のとき
1 型付け規則から ⊢ M1 : B → A かつ ⊢ M2 : B
2 IH より RB→A(M1[x := N]) かつ
RB(M2[x := N])
3 RB→A の定義より
RA(M1[x := N]M2[x := N])
4 M1[x := N]M2[x := N] = (M1M2)[x := N]
5 よって RA((M1M2)[x := N])
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 47
論理関係 [6/6] — 補題5.17 [4/4]
項 M の構造に関する帰納法
◮ M = λxB
.M0 のとき
1 型付け規則から ⊢ M0 : C かつ A = B → C
2 代入補題より ⊢ M0[x := N] : C
3 L を RB(L) なる任意の項とする
4 IH より RC(M0[x := N, xB
:= L])
5 補題 5.17b より RC((λxB
.M0[x := N])L)
6 M0[x := N, xB
:= L] は SN なので
λxB
.M0[x := N] も SN
7 ゆえに RB→C(λxB
.M0[x := N])
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 48
単純型付きλ計算
◮ 型の整合性 (a), (b)
◮ 型
◮ 型付け
◮ 性質 1 — 型保存性 (c)
◮ 代入補題
◮ 主部簡約定理
◮ 性質 2 — 正規化可能性 (d)
◮ 論理関係
◮ 強正規化可能性
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 49
強正規化可能性
Theorem (5.18)
正しく型付けされた λ 項は強正規化可能
証明
1 M を ⊢ M : A なる項とする
2 補題 5.17 より RA(M) が成り立つ
3 ゆえに M は SN
伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 50
おわり

More Related Content

What's hot

強化学習その1
強化学習その1強化学習その1
強化学習その1nishio
 
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化gree_tech
 
機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018Takahiro Kubo
 
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use ToolsDeep Learning JP
 
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~Kenshi Abe
 
絶対に描いてはいけないグラフ入りスライド24枚
絶対に描いてはいけないグラフ入りスライド24枚絶対に描いてはいけないグラフ入りスライド24枚
絶対に描いてはいけないグラフ入りスライド24枚itoyan110
 
型安全性入門
型安全性入門型安全性入門
型安全性入門Akinori Abe
 
3.3節 変分近似法(前半)
3.3節 変分近似法(前半)3.3節 変分近似法(前半)
3.3節 変分近似法(前半)tn1031
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -MITSUNARI Shigeo
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)Deep Learning JP
 
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)Preferred Networks
 
学振特別研究員になるために~知っておくべき10のTips~
学振特別研究員になるために~知っておくべき10のTips~学振特別研究員になるために~知っておくべき10のTips~
学振特別研究員になるために~知っておくべき10のTips~Masahito Ohue
 
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"Deep Learning JP
 
はじめてのKrylov部分空間法
はじめてのKrylov部分空間法はじめてのKrylov部分空間法
はじめてのKrylov部分空間法tmaehara
 
劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章Hakky St
 
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Naoaki Okazaki
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜Megagon Labs
 
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門Masahito Zembutsu
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 

What's hot (20)

強化学習その1
強化学習その1強化学習その1
強化学習その1
 
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
 
機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018機械学習で泣かないためのコード設計 2018
機械学習で泣かないためのコード設計 2018
 
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
【DL輪読会】Toolformer: Language Models Can Teach Themselves to Use Tools
 
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
多人数不完全情報ゲームにおけるAI ~ポーカーと麻雀を例として~
 
絶対に描いてはいけないグラフ入りスライド24枚
絶対に描いてはいけないグラフ入りスライド24枚絶対に描いてはいけないグラフ入りスライド24枚
絶対に描いてはいけないグラフ入りスライド24枚
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
3.3節 変分近似法(前半)
3.3節 変分近似法(前半)3.3節 変分近似法(前半)
3.3節 変分近似法(前半)
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
 
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
不老におけるOptunaを利用した分散ハイパーパラメータ最適化 - 今村秀明(名古屋大学 Optuna講習会)
 
学振特別研究員になるために~知っておくべき10のTips~
学振特別研究員になるために~知っておくべき10のTips~学振特別研究員になるために~知っておくべき10のTips~
学振特別研究員になるために~知っておくべき10のTips~
 
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
 
はじめてのKrylov部分空間法
はじめてのKrylov部分空間法はじめてのKrylov部分空間法
はじめてのKrylov部分空間法
 
劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章劣モジュラ最適化と機械学習1章
劣モジュラ最適化と機械学習1章
 
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
 
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 

Viewers also liked

ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門Eita Sugimoto
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)bleis tift
 
TAPL 勉強会(紹介編)
TAPL 勉強会(紹介編)TAPL 勉強会(紹介編)
TAPL 勉強会(紹介編)none_toka
 
安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのことshibataka000
 
Emacs上のターミナルを最強に
Emacs上のターミナルを最強にEmacs上のターミナルを最強に
Emacs上のターミナルを最強にLintaro Ina
 
TaPL読書会 #9 ~ §14 Exception
TaPL読書会 #9 ~ §14 ExceptionTaPL読書会 #9 ~ §14 Exception
TaPL読書会 #9 ~ §14 ExceptionAkihiro Miyashita
 
TaPL名古屋 Chap2
TaPL名古屋 Chap2TaPL名古屋 Chap2
TaPL名古屋 Chap2Keita Saitou
 
大学新入生のコンピュータ不安の長期定点観測
大学新入生のコンピュータ不安の長期定点観測大学新入生のコンピュータ不安の長期定点観測
大学新入生のコンピュータ不安の長期定点観測Takahiro Sumiya
 
Gradual Typing for Generics
Gradual Typing for GenericsGradual Typing for Generics
Gradual Typing for GenericsLintaro Ina
 
クロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おうクロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おうkitfactory
 
計算量のはなし(Redisを使うなら必読!O(logN)など)
計算量のはなし(Redisを使うなら必読!O(logN)など)計算量のはなし(Redisを使うなら必読!O(logN)など)
計算量のはなし(Redisを使うなら必読!O(logN)など)Makoto SAKAI
 
開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作り開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作りKoichi ITO
 
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)Kenji Aoyama
 
Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10
Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10
Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10Kenji Aoyama
 
OpenBSD/luna88k on LUNA-88K2, at OSC 2013 Nagoya
OpenBSD/luna88k on LUNA-88K2, at OSC 2013 NagoyaOpenBSD/luna88k on LUNA-88K2, at OSC 2013 Nagoya
OpenBSD/luna88k on LUNA-88K2, at OSC 2013 NagoyaKenji Aoyama
 
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kA story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kKenji Aoyama
 
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12Kenji Aoyama
 

Viewers also liked (20)

ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門
 
計算可能実数とは
計算可能実数とは計算可能実数とは
計算可能実数とは
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
 
TAPL 勉強会(紹介編)
TAPL 勉強会(紹介編)TAPL 勉強会(紹介編)
TAPL 勉強会(紹介編)
 
安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと安全性を証明するために知っておくべき4つのこと
安全性を証明するために知っておくべき4つのこと
 
Emacs上のターミナルを最強に
Emacs上のターミナルを最強にEmacs上のターミナルを最強に
Emacs上のターミナルを最強に
 
すごいスライド(Lazy K 紹介)
すごいスライド(Lazy K 紹介)すごいスライド(Lazy K 紹介)
すごいスライド(Lazy K 紹介)
 
TaPL読書会 #9 ~ §14 Exception
TaPL読書会 #9 ~ §14 ExceptionTaPL読書会 #9 ~ §14 Exception
TaPL読書会 #9 ~ §14 Exception
 
Hoare論理
Hoare論理Hoare論理
Hoare論理
 
TaPL名古屋 Chap2
TaPL名古屋 Chap2TaPL名古屋 Chap2
TaPL名古屋 Chap2
 
大学新入生のコンピュータ不安の長期定点観測
大学新入生のコンピュータ不安の長期定点観測大学新入生のコンピュータ不安の長期定点観測
大学新入生のコンピュータ不安の長期定点観測
 
Gradual Typing for Generics
Gradual Typing for GenericsGradual Typing for Generics
Gradual Typing for Generics
 
クロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おうクロスドメインアクセスを理解してWeb APIを楽しく使おう
クロスドメインアクセスを理解してWeb APIを楽しく使おう
 
計算量のはなし(Redisを使うなら必読!O(logN)など)
計算量のはなし(Redisを使うなら必読!O(logN)など)計算量のはなし(Redisを使うなら必読!O(logN)など)
計算量のはなし(Redisを使うなら必読!O(logN)など)
 
開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作り開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作り
 
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
Using "C-bus" extension boards on LUNA-88K2 (at OSC 2015 Nagoya)
 
Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10
Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10
Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10
 
OpenBSD/luna88k on LUNA-88K2, at OSC 2013 Nagoya
OpenBSD/luna88k on LUNA-88K2, at OSC 2013 NagoyaOpenBSD/luna88k on LUNA-88K2, at OSC 2013 Nagoya
OpenBSD/luna88k on LUNA-88K2, at OSC 2013 Nagoya
 
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kA story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88k
 
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12
"PC-9801-86 sound board on LUNA", at NBUG Meeting 2014-12
 

Similar to 論理と計算のしくみ 5.3 型付きλ計算 (前半)

カステラ本勉強会 第三回
カステラ本勉強会 第三回カステラ本勉強会 第三回
カステラ本勉強会 第三回ke beck
 
統計的学習の基礎_3章
統計的学習の基礎_3章統計的学習の基礎_3章
統計的学習の基礎_3章Shoichi Taguchi
 
PRML輪読#3
PRML輪読#3PRML輪読#3
PRML輪読#3matsuolab
 
Simulation_Report1
Simulation_Report1Simulation_Report1
Simulation_Report1T2C_
 
Stanの紹介と応用事例(age heapingの統計モデル)
Stanの紹介と応用事例(age heapingの統計モデル)Stanの紹介と応用事例(age heapingの統計モデル)
Stanの紹介と応用事例(age heapingの統計モデル). .
 
TokyoWebmining統計学部 第1回
TokyoWebmining統計学部 第1回TokyoWebmining統計学部 第1回
TokyoWebmining統計学部 第1回Issei Kurahashi
 
Model seminar shibata_100710
Model seminar shibata_100710Model seminar shibata_100710
Model seminar shibata_100710Kazuya Nishina
 
Takuya Tsuchiya
Takuya TsuchiyaTakuya Tsuchiya
Takuya TsuchiyaSuurist
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4Takeshi Sakaki
 
幾何を使った統計のはなし
幾何を使った統計のはなし幾何を使った統計のはなし
幾何を使った統計のはなしToru Imai
 
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)Ryosuke Sasaki
 
Tpp2012 mwpl on_coq
Tpp2012 mwpl on_coqTpp2012 mwpl on_coq
Tpp2012 mwpl on_coqSUDA Keishi
 
演習II.第1章 ベイズ推論の考え方 Part 3.スライド
演習II.第1章 ベイズ推論の考え方 Part 3.スライド演習II.第1章 ベイズ推論の考え方 Part 3.スライド
演習II.第1章 ベイズ推論の考え方 Part 3.スライドWataru Shito
 
共和分ランクに依存した確率制御アプローチによる多資産間のダイナミックトレーディング
共和分ランクに依存した確率制御アプローチによる多資産間のダイナミックトレーディング共和分ランクに依存した確率制御アプローチによる多資産間のダイナミックトレーディング
共和分ランクに依存した確率制御アプローチによる多資産間のダイナミックトレーディング東出 卓朗
 
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】Naoki Hayashi
 
数理最適化と機械学習の 融合アプローチ -分類と新しい枠組み-
数理最適化と機械学習の融合アプローチ-分類と新しい枠組み-数理最適化と機械学習の融合アプローチ-分類と新しい枠組み-
数理最適化と機械学習の 融合アプローチ -分類と新しい枠組み-MIKIOKUBO3
 
Coursera Machine Learning Week2まとめ 
Coursera Machine Learning Week2まとめ Coursera Machine Learning Week2まとめ 
Coursera Machine Learning Week2まとめ Yuta Koga
 
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムパターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムMiyoshi Yuya
 

Similar to 論理と計算のしくみ 5.3 型付きλ計算 (前半) (20)

カステラ本勉強会 第三回
カステラ本勉強会 第三回カステラ本勉強会 第三回
カステラ本勉強会 第三回
 
統計的学習の基礎_3章
統計的学習の基礎_3章統計的学習の基礎_3章
統計的学習の基礎_3章
 
PRML輪読#3
PRML輪読#3PRML輪読#3
PRML輪読#3
 
Simulation_Report1
Simulation_Report1Simulation_Report1
Simulation_Report1
 
Stanの紹介と応用事例(age heapingの統計モデル)
Stanの紹介と応用事例(age heapingの統計モデル)Stanの紹介と応用事例(age heapingの統計モデル)
Stanの紹介と応用事例(age heapingの統計モデル)
 
TokyoWebmining統計学部 第1回
TokyoWebmining統計学部 第1回TokyoWebmining統計学部 第1回
TokyoWebmining統計学部 第1回
 
Model seminar shibata_100710
Model seminar shibata_100710Model seminar shibata_100710
Model seminar shibata_100710
 
Takuya Tsuchiya
Takuya TsuchiyaTakuya Tsuchiya
Takuya Tsuchiya
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
 
PRML第3章@京大PRML輪講
PRML第3章@京大PRML輪講PRML第3章@京大PRML輪講
PRML第3章@京大PRML輪講
 
幾何を使った統計のはなし
幾何を使った統計のはなし幾何を使った統計のはなし
幾何を使った統計のはなし
 
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
[PRML] パターン認識と機械学習(第3章:線形回帰モデル)
 
Tpp2012 mwpl on_coq
Tpp2012 mwpl on_coqTpp2012 mwpl on_coq
Tpp2012 mwpl on_coq
 
演習II.第1章 ベイズ推論の考え方 Part 3.スライド
演習II.第1章 ベイズ推論の考え方 Part 3.スライド演習II.第1章 ベイズ推論の考え方 Part 3.スライド
演習II.第1章 ベイズ推論の考え方 Part 3.スライド
 
共和分ランクに依存した確率制御アプローチによる多資産間のダイナミックトレーディング
共和分ランクに依存した確率制御アプローチによる多資産間のダイナミックトレーディング共和分ランクに依存した確率制御アプローチによる多資産間のダイナミックトレーディング
共和分ランクに依存した確率制御アプローチによる多資産間のダイナミックトレーディング
 
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
【招待講演】パラメータ制約付き行列分解のベイズ汎化誤差解析【StatsML若手シンポ2020】
 
数理最適化と機械学習の 融合アプローチ -分類と新しい枠組み-
数理最適化と機械学習の融合アプローチ-分類と新しい枠組み-数理最適化と機械学習の融合アプローチ-分類と新しい枠組み-
数理最適化と機械学習の 融合アプローチ -分類と新しい枠組み-
 
Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 
Coursera Machine Learning Week2まとめ 
Coursera Machine Learning Week2まとめ Coursera Machine Learning Week2まとめ 
Coursera Machine Learning Week2まとめ 
 
パターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズムパターン認識 第12章 正則化とパス追跡アルゴリズム
パターン認識 第12章 正則化とパス追跡アルゴリズム
 

論理と計算のしくみ 5.3 型付きλ計算 (前半)

  • 1. 輪講 — 論理と計算のしくみ 5.3 型付きλ計算 (前半) 伊奈 林太郎 (id:tarao) 京都大学 大学院情報学研究科 2012-01-26 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 1
  • 2. 参考文献 萩谷, 西崎. 論理と計算のしくみ. 岩波書店, 2007. J. C. Mitchell. Foundations for Programming Languages. MIT Press, 1996. B. C. Pierce. Types and Programming Languages. MIT Press, 2002. 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 2
  • 3. 型理論のアイディア (λx.xx)(λx.xx) ◮ x は関数のはず 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
  • 4. 型理論のアイディア (λxA→B .xx)(λx.xx) ◮ x は関数のはず 数学のように A → B の関数だと思ってみる 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
  • 5. 型理論のアイディア (λxA→B .xx)(λx.xx) ◮ x は関数のはず 数学のように A → B の関数だと思ってみる ◮ 受け取るのは集合 A の要素 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
  • 6. 型理論のアイディア (λxA→B .xx)(λx.xx) ◮ x は関数のはず 数学のように A → B の関数だと思ってみる ◮ 受け取るのは集合 A の要素 ◮ 渡しているのは関数 A → B (A × B の部分集合) 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
  • 7. 型理論のアイディア (λxA→B .xx)(λx.xx) ◮ x は関数のはず 数学のように A → B の関数だと思ってみる ◮ 受け取るのは集合 A の要素 ◮ 渡しているのは関数 A → B (A × B の部分集合) ◮ A → B ∈ A なの? おかしくね? 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
  • 8. 型理論のアイディア (λxA→B .xx)(λx.xx) ◮ x は関数のはず 数学のように A → B の関数だと思ってみる ◮ 受け取るのは集合 A の要素 ◮ 渡しているのは関数 A → B (A × B の部分集合) ◮ A → B ∈ A なの? おかしくね? ⇒ 実際おかしいから無限ループする 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
  • 9. 型理論のアイディア (λxA→B .xx)(λx.xx) ◮ x は関数のはず 数学のように A → B の関数だと思ってみる ◮ 受け取るのは集合 A の要素 ◮ 渡しているのは関数 A → B (A × B の部分集合) ◮ A → B ∈ A なの? おかしくね? ⇒ 実際おかしいから無限ループする おかしいものを排除すれば 無限ループしないのでは? 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 3
  • 10. 型理論 [1/3] は抽象的な枠組 型を付ける ◮ 式の使われ方に応じて種類分けする ◮ この種類のことを型と呼ぶ 型の整合性 ◮ 型の付け方は整合していないといけない ◮ 同じ式を異なる型として使ってはダメ等 整合性による恩恵 ◮ 使われ方が整合しているので おかしなことが起きない ◮ ということを数学的に証明できる 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 4
  • 11. 型理論 [2/3] の具体例 何を型だと思うか ◮ 関数, 変数の別 ◮ メモリ, プロセス, ロックなどの情報 ◮ セキュリティ上のアクセスレベル ◮ エスケープ, エンコードされているかどうか 防げるおかしなこと ◮ 無限ループ, 関数以外の適用 ◮ メモリリーク, デッドロック ◮ 情報漏洩 ◮ XSS, 文字化け 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 5
  • 12. 型理論 [3/3] は魔法ではない ただし制限もある ◮ 単純型付 λ 計算は再帰関数を一切書けない (ループ禁止だから無限ループしないのは当然) 制限を緩めるには ◮ 複雑にして頑張る ◮ G¨odel の System T, Coq ◮ 部分型, 多相型, 依存型 ◮ プログラムの一部にだけ性質を保証する ◮ OCaml の let rec ◮ Gradual Typing 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 6
  • 13. 単純型付きλ計算 ◮ 型の整合性 (a), (b) ◮ 型 ◮ 型付け ◮ 性質 1 — 型保存性 (c) ◮ 代入補題 ◮ 主部簡約定理 ◮ 性質 2 — 正規化可能性 (d) ◮ 論理関係 ◮ 強正規化可能性 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 7
  • 14. 単純型付きλ計算 ◮ 型の整合性 (a), (b) ◮ 型 ◮ 型付け ◮ 性質 1 — 型保存性 (c) ◮ 代入補題 ◮ 主部簡約定理 ◮ 性質 2 — 正規化可能性 (d) ◮ 論理関係 ◮ 強正規化可能性 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 8
  • 15. 型 基本型 (α, β, γ) ◮ プリミティブな型 (int とか) ◮ どんなものがあるかは予め定めておく 単純型 (A, B, C) A ::= α | A → A 単純型に含めることもある A ::= α | A → A | A × A | A + A → 右結合 ×, + 左結合 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 9
  • 16. 型付け [1/2] 各変数の型は固定 xA と書く 型判断 ⊢ M : A 「M の型は A」 型付け規則 ⊢ xA : A ⊢ M : B ⊢ λxA .M : A → B ⊢ M : A → B ⊢ N : A ⊢ MN : B ⊢ M : A ⊢ N : B ⊢ (M, N) : A × B ⊢ L : A × B π1(L) : A ⊢ L : A × B π2(L) : B 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 10
  • 17. 型付け [2/2] — 型の整合性 M は型が付く (M is well-typed) ◮ 型付け規則で ⊢ M : A が導ける 型が付かない例 λxA .xA xA 型付けの一意性 ◮ 各変数の型が固定なら型付けは一意 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 11
  • 18. 単純型付きλ計算 ◮ 型の整合性 (a), (b) ◮ 型 ◮ 型付け ◮ 性質 1 — 型保存性 (c) ◮ 代入補題 ◮ 主部簡約定理 ◮ 性質 2 — 正規化可能性 (d) ◮ 論理関係 ◮ 強正規化可能性 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 12
  • 19. 型保存性 — 示したいこと ◮ 最終的には「型が付けば○○」と言いたい ◮ 「○○」は正規化等 →β に関すること ◮ →β の前後で型の付き方は変わらないでほしい Theorem (主部簡約定理 (subject reduction)) ⊢ M : A かつ M →β N ならば ⊢ N : A Theorem (関係 R で一般化版) ⊢ M : A かつ M →β N ならば, ⊢ N : B かつ BRA. ◮ 上は R が = の場合の話 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 13
  • 20. 単純型付きλ計算 ◮ 型の整合性 (a), (b) ◮ 型 ◮ 型付け ◮ 性質 1 — 型保存性 (c) ◮ 代入補題 ◮ 主部簡約定理 ◮ 性質 2 — 正規化可能性 (d) ◮ 論理関係 ◮ 強正規化可能性 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 14
  • 21. 代入補題 [1/2] Lemma (代入補題) ⊢ M : A かつ xB かつ ⊢ N : B ならば ⊢ M[x := N] : A. 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 15
  • 22. 代入補題 [2/2] — 証明 [1/3] 証明: M の構造に関する帰納法による ◮ M = y のとき ◮ y = x の場合 1 型付け規則と y = x から ⊢ yB : B 2 ⊢ M : A なので B = A 3 M[x := N] = N 4 補題の前提条件と B = A より ⊢ N : A ◮ y = x の場合 1 型付け規則から yA のはず 2 M[x := N] = y 3 変数の型付け規則を使って ⊢ yA : A 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 16
  • 23. 代入補題 [2/2] — 証明 [2/3] 証明: M の構造に関する帰納法による ◮ M = M1M2 のとき 1 型付け規則から ⊢ M1 : C → A かつ ⊢ M2 : C 2 IH より ⊢ M1[x := N] : C → A 3 IH より ⊢ M2[x := N] : C 4 M1[x := N]M2[x := N] = (M1M2)[x := N] 5 適用の型付け規則を使って ⊢ (M1M2)[x := N] : A 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 17
  • 24. 代入補題 [2/2] — 証明 [3/3] 証明: M の構造に関する帰納法による ◮ M = λyA1 .L のとき 1 型付け規則から A = A1 → A2 かつ ⊢ L : A2 2 λzA1 .L[y := z] =α λyA1 .L とできるので y = x かつ y は N に自由に出現しないとして も一般性を失わない 3 λyA1 .L[x := N] = (λyA1 .L)[x := N] 4 IH より ⊢ L[x := N] : A2 5 抽象の型付け規則を使って ⊢ (λyA1 .L)[x := N] : A1 → A2 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 18
  • 25. 単純型付きλ計算 ◮ 型の整合性 (a), (b) ◮ 型 ◮ 型付け ◮ 性質 1 — 型保存性 (c) ◮ 代入補題 ◮ 主部簡約定理 ◮ 性質 2 — 正規化可能性 (d) ◮ 論理関係 ◮ 強正規化可能性 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 19
  • 26. 主部簡約定理 [1/2] Theorem (主部簡約定理 (subject reduction)) ⊢ M : A かつ M →β N ならば ⊢ N : A 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 20
  • 27. 主部簡約定理 [2/2] — 証明 [1/2] 証明: M →β N の導出に関する帰納法による ◮ Beta のとき 1 M = (λxB .M1)M2 →β M1[x := M2] = N 2 型付け規則から ⊢ M1 : A かつ ⊢ M2 : B 3 代入補題より ⊢ M1[x := M2] : A ◮ Lam のとき 1 M = λxB .L →β λxB .L′ = N かつ L →β L′ 2 型付け規則から A = B → C かつ ⊢ L : C 3 IH より ⊢ L′ : C 4 抽象の型付け規則を使って ⊢ λxB .L′ : B → C 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 21
  • 28. 主部簡約定理 [2/2] — 証明 [2/2] 証明: M →β N の導出に関する帰納法による ◮ AppL のとき 1 M = M1M2 →β M′ 1M2 = N かつ M1 →β M′ 1 2 型付け規則から ⊢ M1 : B → A かつ ⊢ M2 : B 3 IH より ⊢ M′ 1 : B → A 4 適用の型付け規則を使って ⊢ M′ 1M2 : A ◮ AppR のとき 1 M = M1M2 →β M1M′ 2 = N かつ M2 →β M′ 2 2 型付け規則から ⊢ M1 : B → A かつ ⊢ M2 : B 3 IH より ⊢ M′ 2 : B 4 適用の型付け規則を使って ⊢ M1M′ 2 : A 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 22
  • 29. 単純型付きλ計算 ◮ 型の整合性 (a), (b) ◮ 型 ◮ 型付け ◮ 性質 1 — 型保存性 (c) ◮ 代入補題 ◮ 主部簡約定理 ◮ 性質 2 — 正規化可能性 (d) ◮ 論理関係 ◮ 強正規化可能性 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 23
  • 30. やりたいこと [1/4] すべての無限ループを 生まれる前に消し去りたい 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 24
  • 31. やりたいこと [2/4] (λx.xx)(λx.xx) ◮ 「型が付いたら無限ループしない」と言いたい ◮ 上の例に限れば型が付かないことは既に見た ◮ 止まらない項すべてに関して示すには? 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 25
  • 32. やりたいこと [2/4] (λx.xx)(λx.xx) ◮ 「型が付いたら無限ループしない」と言いたい ◮ 上の例に限れば型が付かないことは既に見た ◮ 止まらない項すべてに関して示すには? ◮ そもそも「無限ループ」って何? ◮ 無限簡約列があること ◮ 評価戦略によってあったりなかったり 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 25
  • 33. やりたいこと [3/4] — 定義 [1/2] β 正規形 M ∈ NFβ ⇐⇒ M は β 簡約で正規形 β 正規形への有限簡約 M ⇓β N ⇐⇒ M = M0 →β M1 →β · · · →β Mn = N ∈ NFβ 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 26
  • 34. やりたいこと [3/4] — 定義 [2/2] Definition (弱正規化可能) 型の付いた項 M に対して, ある N が存在して M ⇓β N. ◮ 有限簡約列が少なくとも 1 つあるということ ◮ うまい評価戦略では止まるということ Definition (強正規化可能 SN) 型の付いた項 M に対して, M から始まる無限簡約 列 M →β M1 →β M2 →β · · · が存在しない. ◮ どんな評価戦略でも止まるということ 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 27
  • 35. やりたいこと [4/4] 評価戦略を固定した場合の正規化可能性 ◮ 簡約列は一通りしかない ◮ 弱正規化可能 ⇐⇒ 強正規化可能 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 28
  • 36. やりたいこと [4/4] 評価戦略を固定した場合の正規化可能性 ◮ 簡約列は一通りしかない ◮ 弱正規化可能 ⇐⇒ 強正規化可能 でもせっかくなので一般の場合で証明 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 28
  • 37. 勘所 [1/2] 帰納法で証明できる? ◮ M, N がともに SN のとき MN は SN? ◮ M = λx.xx と N = λx.xx はともに SN ◮ Ω = MN なので適用すると SN ではない ◮ M, N は型が付かないから大丈夫では? ◮ 危険な項すべて型が付かないと言えれば OK ◮ 「危険な項は型が付かない」こそが強正規化性 ⇒ 堂々巡り 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 29
  • 38. 勘所 [2/2] 問題点の分析 ◮ M = λx.xx 自体は SN でも MN は SN でない ◮ 組み合わせると止まらない項は除外したい 組み合わせても止まる項 ◮ M が “止まる項” である条件: MN も “止まる項” 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 30
  • 39. 証明方法 1 “止まる項” を項の形で見分ける ◮ 制限された形の項はすべて SN ◮ どんな項も制限された項に変換できる ◮ 型付き項なら変換が SN を保存する 2 “止まる項” を帰納的に集める ◮ 集めた項全体 = 型付き項全体を示す 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 31
  • 40. 証明方法 1 “止まる項” を項の形で見分ける ◮ 制限された形の項はすべて SN ◮ どんな項も制限された項に変換できる ◮ 型付き項なら変換が SN を保存する 2 “止まる項” を帰納的に集める ◮ 集めた項全体 = 型付き項全体を示す 今回は2つ目の方法 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 31
  • 41. 証明の流れ 1 “止まる項” であることを表す述語を定義 2 “止まる項” の性質を証明 ◮ 変数は “止まる” ◮ “止まる項” は →β しても “止まる” ◮ →β して “止まる” なら元の項も “止まる” ◮ ただし元の項の形を制限 3 すべての型付き項は “止まる” 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 32
  • 42. 単純型付きλ計算 ◮ 型の整合性 (a), (b) ◮ 型 ◮ 型付け ◮ 性質 1 — 型保存性 (c) ◮ 代入補題 ◮ 主部簡約定理 ◮ 性質 2 — 正規化可能性 (d) ◮ 論理関係 ◮ 強正規化可能性 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 33
  • 43. 論理関係 [1/6] — 定義 述語 RA ⊢ M : α M は SN Rα(M) ⊢ M : A → B M は SN ∀N.RA(N) ⇒ RB(MN) RA→B(M) ◮ RA を満たす項は明らかに SN ◮ RA を満たす項の集合と 型 A の項全体の集合が一致すればよい ◮ cbv に固定するなら 「M は SN」の代わりに「M ⇓cbv ∃ N」 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 34
  • 44. 論理関係 [2/6] — 補題5.16 [1/2] Lemma (5.16) 0 ≤ i ≤ n.RAi (Mi) ならば RA(xA1→···→An→A M1 · · · Mn). ◮ 大雑把には RA(xA ) が成り立つということ ◮ “止まる項” の条件を反映した強い形 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 35
  • 45. 論理関係 [2/6] — 補題5.16 [2/2] 証明: 型 A の構造に関する帰納法 1 RAi (Mi) より Mi は SN 2 xA1→···→An→A M1 · · · Mn は明らかに SN 3 RAi (Mi) より ⊢ Mi : Ai 4 型付け規則より ⊢ xA1→···→An→α M1 · · · Mn : A 5 ◮ A = α のとき ◮ ただちに RA(xA1→···→An→A M1 · · · Mn) ◮ A = B → C のとき 1 任意の RB(N) なる N について 2 IH より RC(xA1→···→An→B→C M1 · · · MnN) 3 ゆえに RB→C(xA1→···→An→B→C M1 · · · Mn) 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 36
  • 46. 論理関係 [3/6] — 補題5.15 [1/3] Lemma (5.15’) M →β M′ のとき RA(M) ならば RA(M′ ) ◮ ⇐= は成り立たない (反例: M = (λxy.y)(λz.Ω) →β λy.y = M′ ) ◮ ⇐= なしでもこの後の証明は可能 ◮ 教科書は ⇐= も成り立つと書いてあるので誤り ◮ →cbv では ⊢ M : A を前提に加えれば OK [3] 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 37
  • 47. 論理関係 [3/6] — 補題5.15 [2/3] 証明: 型 A の構造に関する帰納法 ◮ A = α のとき 1 Rα(M) かつ M →β M′ 2 Rα(M) より ⊢ M : α かつ M は SN 3 M′ は SN(さもないと M が SN でなくなる) ◮ cbv では簡約の一意性をここで使う 4 主部簡約定理より ⊢ M′ : α 5 よって Rα(M′ ) 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 38
  • 48. 論理関係 [3/6] — 補題5.15 [3/3] 証明: 型 A の構造に関する帰納法 ◮ A = B → C のとき 1 RB→C(M) かつ M →β M′ 2 N を RB(N) を満たす項とする 3 RB→C(M) より RC(MN) 4 MN →β M′ N なので IH より RB(M′ N) 5 RB(M′ N) なので M′ N は SN 6 M′ は SN(さもないと M′ N が SN でなくなる) 7 主部簡約定理より ⊢ M′ : B → C 8 よって RB→C(M′ ) 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 39
  • 49. 論理関係 [4/6] — 補題5.17a [1/2] Lemma (5.17a) ⊢ M0 : A1 → · · · An → α かつ RB(L), RAi (Ni) か つ Rα(M0[xB := L]N1 · · · Nn) ならば Rα((λxB .M0)LN1 · · · Nn). ◮ 教科書には無い補題 ◮ (λxB .M0)LN1 · · · Nn を (λxB .M0)LN と略記 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 40
  • 50. 論理関係 [4/6] — 補題5.17a [2/2] 証明 1 RB(L), RAi (Ni) より ⊢ L : B, ⊢ Ni : Ai 2 型付け規則を使って ⊢ (λxB .M0)LN : α 3 RB(L), RAi (Ni) より L, Ni は SN 4 Rα(M0[xB := L]N) より M0[xB := L]N は SN 5 M0, λxB .M0 も SN(さもないと矛盾) 6 M0 →∗ β M′ 0, L →∗ β L′ , Ni →∗ β N′ i なる 任意の M′ 0, L′ , N′ i について ◮ M′ 0[x := L′ ]N′ は SN ◮ (λxB .M0)LN →∗ β M′ 0[x := L′ ]N′ は有限簡約 7 なので (λxB M0)LN も SN 8 ゆえに Rα((λxB .M0)LN) 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 41
  • 51. 論理関係 [5/6] — 補題5.17b [1/3] Lemma (5.17b) ⊢ M0 : A1 → · · · An → A かつ RB(L), RAi (Ni) か つ RA(M0[xB := L]N1 · · · Nn) ならば RA((λxB .M0)LN1 · · · Nn) ◮ 教科書には無い補題 ◮ 補題 5.17a の型 α が A に一般化されたもの 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 42
  • 52. 論理関係 [5/6] — 補題5.17b [2/3] 証明: 型 A に関する帰納法 ◮ A = α のとき ◮ 補題 5.17a より OK 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 43
  • 53. 論理関係 [5/6] — 補題5.17b [3/3] 証明: 型 A に関する帰納法 ◮ A = C1 → C2 のとき 1 M1 を RC1 (M1) を満たす任意の項とする 2 RC1→C2 (M0[x := L]N) より ◮ ⊢ M0[x := L]N : C1 → C2 ◮ RC2 (M0[x := L]NM1) 3 IH より RC2 ((λxB .M0)LNM1) ◮ ⊢ (λxB .M0)LNM1 : C2 ◮ (λxB .M0)LNM1 は SN 4 主部簡約補題より ⊢ (λxB .M0)LN : C1 → C2 5 (λxB .M0)LN も SN 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 44
  • 54. 論理関係 [6/6] — 補題5.17 [1/4] Lemma (5.17) ⊢ M : A かつ RA1 (N1), . . . , RAn (Nn) ならば RA(M[xA1 1 := N1, . . . , xAn n := Nn]). ◮ xA1 1 := N1, . . . , xAn n := Nn を x := N と書く 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 45
  • 55. 論理関係 [6/6] — 補題5.17 [2/4] 項 M の構造に関する帰納法 ◮ M = xi のとき 1 M[x := N] = Ni 2 RAi (Ni) なので成立 ◮ M = y = xi のとき 1 M[x := N] = yA 2 補題 5.16 より成立 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 46
  • 56. 論理関係 [6/6] — 補題5.17 [3/4] 項 M の構造に関する帰納法 ◮ M = M1M2 のとき 1 型付け規則から ⊢ M1 : B → A かつ ⊢ M2 : B 2 IH より RB→A(M1[x := N]) かつ RB(M2[x := N]) 3 RB→A の定義より RA(M1[x := N]M2[x := N]) 4 M1[x := N]M2[x := N] = (M1M2)[x := N] 5 よって RA((M1M2)[x := N]) 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 47
  • 57. 論理関係 [6/6] — 補題5.17 [4/4] 項 M の構造に関する帰納法 ◮ M = λxB .M0 のとき 1 型付け規則から ⊢ M0 : C かつ A = B → C 2 代入補題より ⊢ M0[x := N] : C 3 L を RB(L) なる任意の項とする 4 IH より RC(M0[x := N, xB := L]) 5 補題 5.17b より RC((λxB .M0[x := N])L) 6 M0[x := N, xB := L] は SN なので λxB .M0[x := N] も SN 7 ゆえに RB→C(λxB .M0[x := N]) 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 48
  • 58. 単純型付きλ計算 ◮ 型の整合性 (a), (b) ◮ 型 ◮ 型付け ◮ 性質 1 — 型保存性 (c) ◮ 代入補題 ◮ 主部簡約定理 ◮ 性質 2 — 正規化可能性 (d) ◮ 論理関係 ◮ 強正規化可能性 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 49
  • 59. 強正規化可能性 Theorem (5.18) 正しく型付けされた λ 項は強正規化可能 証明 1 M を ⊢ M : A なる項とする 2 補題 5.17 より RA(M) が成り立つ 3 ゆえに M は SN 伊奈 林太郎 (id:tarao) 輪講 — 論理と計算のしくみ 5.3 型付き λ 計算 (前半) 50