BarendregtのLambda calculi with typesのintroについての非常に不正確なメモ(自分用)

http://d.hatena.ne.jp/kgbu/20080617/1213685112
でひっかかっていたので、BarendregtのLambda calculi with typesを少し読んでみた。
以下、自分にもよくわからないメモなので、もし間違って検索でここに来た人は、すみませんが無視してください。
ちなみに、Postscriptのファイルはhttp://www.informatik.uni-ulm.de/ki/Edu/Vorlesungen/Typentheorie/SS98/HBKJ.ps.gz
から取ってきた。他にも各所にあるらしい。
PostscriptのファイルのViewerがWindos上になくて、VMware上のUbuntuで開いたりして、妙に手間取ってしまった。おかげで、PostscriptのファイルをPDFに変換するサービスを見つけたりもした。でもここは使ってくれるフォントがイマイチ、かな。結局、Windows XP上のFirefox2.0のPDF readerのプラグインでは検索はうまくできるようにならなかったし。
(追記:Ubuntu上のPDFリーダー:Evinceだとうまくいく)

Introの部分

型付きλ計算を導入したのはHaskell B. Curryと A. Churchだったそれぞれ流儀が違っていて、

  • Curryのケース:明示的に型は指定しない。型チェックはコンパイラが行う→ML言語

(lambda calculi with type assingment)

  • Churchのケース:すべての項(term)について、明示的に型を指定する→ALGOL68, Pascal言語(systems of typed lambda calculus)

Churchのケースの場合、項は常に正規形を持つ点が重要である。ただし、プログラムの停止問題が解けないことから、逆に、Churchのタイプの型付きλ計算では、ある種の(例えば、停止しない)プログラムが実装可能ではないこともわかる。

(以下:自註:つまり M(YM) = YMのように不動点をなすようなプログラムは無限にβreductionできるケースとも考えられ、型付きλ計算には含まれないという見方もできる)

これについてBarendregtの1990年の論文の定理4.2.15を参照

計算できない関数というのは、どういうものか?二階の型付きλ計算(λ2)では、計算できない再帰関数はあるが、それは数学的な分析(二階の計算)を行う場合には回避できる(←訳がおかしいな)

型付きのλ計算のプログラムへの応用
型Aは述語とみなすことができ、ある項Mが型Aを持つということは、述語を証明するということになる。これが定理証明系に応用された。(AUTOMATHシステム)
項の正規化はformula-as-types (型による公式の表現)

最近(1990年代まで)、たくさんの型付システムがでてきたが、この論文で扱うのは。

  • もっともシンプルなバージョン
  • βリダクションだけで、ηリダクション等は含まず
  • Churchタイプの型付けoperatorとして、→(関数)とIIは扱うが、×(直積)やΣ(直和?)は扱わない
  • Curryタイプの型付けでは→、∩、μだけを扱う

しがって、Martin-Lof(1984)の型理論とかは扱わない。

上記のようなシンプルなスタイルでも、十分に興味深い例がある。

この論文では、型付λ計算の意味論(semantics)には踏み込まない。
というのは、Churchタイプの型付きラムダ計算のモデルの記述(notion)についてはこの論文執筆当時も議論が続いていたからだ。notionについては、Jacobs(1991)によってfibre(束)カテゴリーを使ってまとめられている(←自信無し)

参考になる本
Girard 編の(1989)が、semanticsも扱っている。

この論文の第2章は、型無しのλ計算についての紹介
第3章は型付きλ計算についての解説
第4章はCurryの型付きラムダ計算についての解説
第5章はChurchの型付きラムダ計算についての解説