English version
1, 2, 3, という具体的な数を,「数」という名前で抽象化し,それ(「数」)が,全ての具体的な数を含むことが理解できるのは人間のすばらしい能力である.私にとって面白いことに話すことができる能力とこの数を数える能力はどの人でも病気などでない限り可能なようだ.機械には(まだ)それはできない.
人間はこの「抽象化」ということを難なくやってのける.たとえばほとんどの人は椅子という概念を持っている.機械で椅子の写真を探させるのは現在では熱いトピックである.人間は IKEA (2009年時点で有名な家具の会社)のカタログを見て,いろんな形の椅子を椅子と認識できる.そしてどのように使えば良いのかも簡単に判断できる.しかし,椅子という言葉には,無限の可能性の椅子が含まれているのだ.無限の可能性にもかかわらず人間は新しいそれまで存在していなかったデザインの椅子を認識できる.
同様に,λ計算では個々の函数を扱わない.函数全てについて考える.どのような数学的問題が未来に出てくるのかはわからない.しかし,あらゆる函数に関しての理論があれば,未来になっても我々はそれを解くことができるだろう.(ただし函数という概念が十分抽象化されていて多くの問題をカバーできる場合に限る.) 数学は古くならない.足し算についての考えは,少なくとも何千年かは生きのびてきた.おそらく,かなり長い間この考えは正しいものであるだろう.λ計算が無限の種類の函数について考えたり,抽象化などということをするのは,同様のことを期待するからである.私は一度正しかったものは,いつまでたっても正しいような学問が欲しい.なぜなら一度勉強すれば済むからである.多くの学問はそれを目指しているが,実際はなかなか難しい.
数学が無限とか定義とかに拘るのは,今日正しかった足し算が明日間違いにならないことを期待したいからである.数学によっていろいろな技術が発展してきたのを見ると,私にはこれがとても面白い.一度確立したら無限に変化しない学問が,世界を変化させているからである.しかし,これは当然である.技術の進歩は昨日の進歩の上に成り立っている.したがって,その基礎が毎日変化しては困る.技術自体が毎日変化してもかまわない.その基礎がゆるぎのないものでさえあれば良い.基礎がゆるがないものであるから,その上に変化を積み重ねられるのだ.
English version
ここで抽象化ということを述べておこう.抽象化というのはある考えから「なにか特定の具体例とは関係ない考え」を導くものである.この blog は正確さよりも理解したというような感覚を重要視しているので,ここで「なぜこんな『抽象化』などということを考えるのかという動機」を述べておかねばなるまい.抽象化をするのは,具体例では十分ではないからだ.足し算とは何かということがもし理解できれば,「無限の組み合わせの足し算」が可能である.記憶には限りがあるため,個々の例をいくら覚えても有限の組の足し算しかできない.「どんな数でも足し算はできるし,その方法もある.」ということを理解できることは強力である.
機械に問題の具体例を教えこむことによって計算しているように見せる方法もある.これは計算の手順を教える方法とは異なるアプローチである.1+1 の答えは2 である.1+2 の答えは 3 である.ということを覚えこませると,1+2 は? と尋ねると 3 と答えるので計算しているように見える.しかし,覚えていない答えを答えることはできない.具体例では十分ではないというのはそういう意味である.
1, 2, 3 という具体的な数字ではなく,それらを全てまとめて「数」という概念に抽象化することができる.抽象化によって「無限の種類の問いに答える」計算ができる機械を作ることができる.ここでの無限というのは,どんな数でも足し算できるということであって,普通の人でもできることだ.1 + 10 はできるが,1 + 128 はできないというようなことはない.時々「無限」という言葉がでるとどんなものでも不可能と考える人がいるが,そんなことはない.何か一つ数を選ぶということは無限の可能性の中から一つ選ぶということだ,そしてその数が何であれ,1 を加えることはできるだろう.もちろん数の大きすぎて計算することは一生かかってもできないかもしれないが,しかし,どんな数でも,具体的な数が示されればそれらを足し算することは可能であることは理解できるだろう.
高校数学で一番重要な概念は微分積分だと私は個人的に思っている.それは,収束という考えを通してでてくる,「無限は有限の中に存在可能である」という考えである.たとえば,0 と 1 の間には無限の数が含まれている.無限平面を一点を除いて半径1の半球に投影することができる.など例は多数ある.ピタゴラスは有限の区間には有限の数しか入らないとしたため,これに反対したゼノンはパラドックスを唱えて間違いを指摘した.
個々の数ではなく数を抽象化して,数そのものを考えることで無限を扱うことができる.これは実に強力な考えである.λ計算では計算するということを3つの定義に抽象化する.3つの定義はそれぞれ函数を対象とする.これは具体的な函数ではなく,任意の函数である.つまり無限の種類の函数を考えることができる.
ここで抽象化ということを述べておこう.抽象化というのはある考えから「なにか特定の具体例とは関係ない考え」を導くものである.この blog は正確さよりも理解したというような感覚を重要視しているので,ここで「なぜこんな『抽象化』などということを考えるのかという動機」を述べておかねばなるまい.抽象化をするのは,具体例では十分ではないからだ.足し算とは何かということがもし理解できれば,「無限の組み合わせの足し算」が可能である.記憶には限りがあるため,個々の例をいくら覚えても有限の組の足し算しかできない.「どんな数でも足し算はできるし,その方法もある.」ということを理解できることは強力である.
機械に問題の具体例を教えこむことによって計算しているように見せる方法もある.これは計算の手順を教える方法とは異なるアプローチである.1+1 の答えは2 である.1+2 の答えは 3 である.ということを覚えこませると,1+2 は? と尋ねると 3 と答えるので計算しているように見える.しかし,覚えていない答えを答えることはできない.具体例では十分ではないというのはそういう意味である.
1, 2, 3 という具体的な数字ではなく,それらを全てまとめて「数」という概念に抽象化することができる.抽象化によって「無限の種類の問いに答える」計算ができる機械を作ることができる.ここでの無限というのは,どんな数でも足し算できるということであって,普通の人でもできることだ.1 + 10 はできるが,1 + 128 はできないというようなことはない.時々「無限」という言葉がでるとどんなものでも不可能と考える人がいるが,そんなことはない.何か一つ数を選ぶということは無限の可能性の中から一つ選ぶということだ,そしてその数が何であれ,1 を加えることはできるだろう.もちろん数の大きすぎて計算することは一生かかってもできないかもしれないが,しかし,どんな数でも,具体的な数が示されればそれらを足し算することは可能であることは理解できるだろう.
高校数学で一番重要な概念は微分積分だと私は個人的に思っている.それは,収束という考えを通してでてくる,「無限は有限の中に存在可能である」という考えである.たとえば,0 と 1 の間には無限の数が含まれている.無限平面を一点を除いて半径1の半球に投影することができる.など例は多数ある.ピタゴラスは有限の区間には有限の数しか入らないとしたため,これに反対したゼノンはパラドックスを唱えて間違いを指摘した.
個々の数ではなく数を抽象化して,数そのものを考えることで無限を扱うことができる.これは実に強力な考えである.λ計算では計算するということを3つの定義に抽象化する.3つの定義はそれぞれ函数を対象とする.これは具体的な函数ではなく,任意の函数である.つまり無限の種類の函数を考えることができる.
English version
これまで SUCC1 や Pop1 という機械を見てきた.それぞれの機械はある手順を実行する.手順は入力に対してどんな操作をして出力を作るかという命令を順番に並べたものである.ここでは単純なモデルとして機械は一度に一つの命令しか実行できないものを考えた(つまりここでは並列計算は考えない).命令には,「入力があれば出力のテーブルにコピーする」や,「出力のテーブルの頭と尾の記号を削除する」というようなものがあった.
命令を並べた手順によって計算というものができることはこれまでにみてきた.その具体例は SUCC1 と Pop1 であった.こうやって任意の機能の機械を作っていくこともできる.しかし,毎回新しい問題ごとに設計しなくてはならないのだろうか.足し算のために足し算機械を,引き算のために引き算機械を作る必要があるのだろうか.それとも足し算も引き算もかけ算も割り算もできる,より一般的な計算機械を作ることはできるのだろうか.
こうなると数学者は考える.「いったいいくつの命令があれば全ての問題を解くことができるのだろうか.」「全ての問題とはいったいなんだろうか」「何が計算でき,何が計算できないものなのか」
以前,λ計算の動機という話をした.そこでは計算というものを形式的に考え直すという動機があった.これまでに計算はより単純な手順によって構成されることを見てきた.つまり,計算は形式的なものでも実行できる,それは可能だったのだ.可能性がわかったので,質問は次のレベルになる.多くの学問の発展と同じパターンがここには見られる.
λ計算について次のレベルに行く時が来たようだ.
これまで SUCC1 や Pop1 という機械を見てきた.それぞれの機械はある手順を実行する.手順は入力に対してどんな操作をして出力を作るかという命令を順番に並べたものである.ここでは単純なモデルとして機械は一度に一つの命令しか実行できないものを考えた(つまりここでは並列計算は考えない).命令には,「入力があれば出力のテーブルにコピーする」や,「出力のテーブルの頭と尾の記号を削除する」というようなものがあった.
命令を並べた手順によって計算というものができることはこれまでにみてきた.その具体例は SUCC1 と Pop1 であった.こうやって任意の機能の機械を作っていくこともできる.しかし,毎回新しい問題ごとに設計しなくてはならないのだろうか.足し算のために足し算機械を,引き算のために引き算機械を作る必要があるのだろうか.それとも足し算も引き算もかけ算も割り算もできる,より一般的な計算機械を作ることはできるのだろうか.
こうなると数学者は考える.「いったいいくつの命令があれば全ての問題を解くことができるのだろうか.」「全ての問題とはいったいなんだろうか」「何が計算でき,何が計算できないものなのか」
以前,λ計算の動機という話をした.そこでは計算というものを形式的に考え直すという動機があった.これまでに計算はより単純な手順によって構成されることを見てきた.つまり,計算は形式的なものでも実行できる,それは可能だったのだ.可能性がわかったので,質問は次のレベルになる.多くの学問の発展と同じパターンがここには見られる.
λ計算について次のレベルに行く時が来たようだ.