SlideShare a Scribd company logo

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

『論理と計算のしくみ』(2007, 岩波書店)の輪講資料 2012-01-26

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
Ad

Recommended

トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?hoxo_m
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜Megagon Labs
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向ohken
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...joisino
 
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)Takao Yamanaka
 
[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習[DL輪読会]相互情報量最大化による表現学習
[DL輪読会]相互情報量最大化による表現学習Deep Learning JP
 
相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心takehikoihayashi
 

More Related Content

What's hot

【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)MLSE
 
統計的係り受け解析入門
統計的係り受け解析入門統計的係り受け解析入門
統計的係り受け解析入門Yuya Unno
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Surveytmtm otm
 
Sliced Wasserstein距離と生成モデル
Sliced Wasserstein距離と生成モデルSliced Wasserstein距離と生成モデル
Sliced Wasserstein距離と生成モデルohken
 
2 6.ゼロ切断・過剰モデル
2 6.ゼロ切断・過剰モデル2 6.ゼロ切断・過剰モデル
2 6.ゼロ切断・過剰モデルlogics-of-blue
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画までShunji Umetani
 
[DL輪読会]ICLR2020の分布外検知速報
[DL輪読会]ICLR2020の分布外検知速報[DL輪読会]ICLR2020の分布外検知速報
[DL輪読会]ICLR2020の分布外検知速報Deep Learning JP
 
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本hoxo_m
 
ブースティング入門
ブースティング入門ブースティング入門
ブースティング入門Retrieva inc.
 
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!Kazuhide Okamura
 
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)Motoya Wakiyama
 
変分ベイズ法の説明
変分ベイズ法の説明変分ベイズ法の説明
変分ベイズ法の説明Haruka Ozaki
 
順序データでもベイズモデリング
順序データでもベイズモデリング順序データでもベイズモデリング
順序データでもベイズモデリング. .
 
強化学習その1
強化学習その1強化学習その1
強化学習その1nishio
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)Takao Yamanaka
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定Akira Masuda
 
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話Classi.corp
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門joisino
 
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Naoaki Okazaki
 

What's hot (20)

【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
【基調講演】『深層学習の原理の理解に向けた理論の試み』 今泉 允聡(東大)
 
統計的係り受け解析入門
統計的係り受け解析入門統計的係り受け解析入門
統計的係り受け解析入門
 
Bayesian Neural Networks : Survey
Bayesian Neural Networks : SurveyBayesian Neural Networks : Survey
Bayesian Neural Networks : Survey
 
Sliced Wasserstein距離と生成モデル
Sliced Wasserstein距離と生成モデルSliced Wasserstein距離と生成モデル
Sliced Wasserstein距離と生成モデル
 
2 6.ゼロ切断・過剰モデル
2 6.ゼロ切断・過剰モデル2 6.ゼロ切断・過剰モデル
2 6.ゼロ切断・過剰モデル
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
 
EMアルゴリズム
EMアルゴリズムEMアルゴリズム
EMアルゴリズム
 
[DL輪読会]ICLR2020の分布外検知速報
[DL輪読会]ICLR2020の分布外検知速報[DL輪読会]ICLR2020の分布外検知速報
[DL輪読会]ICLR2020の分布外検知速報
 
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本トピックモデルの評価指標 Coherence 研究まとめ #トピ本
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
 
ブースティング入門
ブースティング入門ブースティング入門
ブースティング入門
 
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
 
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
 
変分ベイズ法の説明
変分ベイズ法の説明変分ベイズ法の説明
変分ベイズ法の説明
 
順序データでもベイズモデリング
順序データでもベイズモデリング順序データでもベイズモデリング
順序データでもベイズモデリング
 
強化学習その1
強化学習その1強化学習その1
強化学習その1
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話pymcとpystanでベイズ推定してみた話
pymcとpystanでベイズ推定してみた話
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
 

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