準備3 定義の重要性

Last-modified: Thu, 18 May 2017 09:11:03 JST (2535d)
Top > 準備3 定義の重要性

そもそも何故公理的集合論や論理体系のような、一見難しそうなものを用いてまで自然数や実数のような素朴な概念を厳密に定義しなければならないのでしょうか? そこまで厳密とは言えなくても素朴なイメージがあれば、十分問題なく議論できるのではないでしょうか? ここではまずそういった疑問について考えてみましょう。



多義性の排除

まず数学は、何かを主張し、それを証明したり反証したりする学問です。この営みにおいて前提となるのは、主張そのものが一義的に捉えられるということです。主張が多義的に捉えられたり、そもそも主張の形をなしていなかったりしたら、数学で厳密に扱うことは出来ません。例えば厳密な定義よりも素朴なイメージに基づくことが多い日常会話における数々の主張では、意図せず主張が捻じ曲がってしまったり多義的になってしまったりすることがありえます。そうならないように、数学ではいかに複雑で難解な主張でも、そこに現れる概念が厳密に定義されていることによって一義的であることが保証されているのです。

例えば数学の未解決問題に「リーマン予想」というものがありますが、その解決がいかに難しくても、自然数と整数と有理数と実数と複素数という概念を定義し、位相と収束という概念を定義し、正則関数と解析接続という概念を定義し、\( \zeta \)関数とその非自明な零点という概念を定義し、定義の間に適宜必要な命題*1を挟むことで、その主張を厳密に与えることが出来ます。

もちろん、既に先人によって一義的に与えられている筈の主張を、各人が勝手に歪曲してしまったら元も子もありません。例えばリーマン予想を証明できればとても嬉しいわけですが、その主張を曲げて証明してもリーマン予想を証明したことにはならないのです。

例1(主張の勝手な変更)
実は\( 1+1=2 \)という等式こそがリーマン予想である。この等式は正しいので、リーマン予想は証明された。

このようなデタラメが問題であることは言うまでもありませんが、これがデタラメであるということを厳密に論証できる*2のも、数学の主張が概念の厳密な定義の上に一義的に構築されている恩恵であると思います。



未定義性の排除

そもそも数学では原理的に未定義な概念の非自明な性質*3を証明することが出来ないということを前提として下さい。素朴なイメージがあればある程度の性質をイメージすることは出来るでしょうが、それは証明ではありません。素朴なイメージのみを用いて議論をしても、人によってイメージは異なりうるので、人によって異なる結論に至ってしまいます。数学では、誰が証明をしても、それが妥当な演繹に基づく限り、同じ結論が導かれるものです。厳密な定義の上で初めて、厳密な証明が可能となるのです。

もちろん、完全には厳密でないにしろ、正しい命題の説明の証明に近い説明をすることは出来ます。それは何ら問題ではありません。問題なのは逆に、厳密な証明でなくてもよいのであれば正しくない命題すら説明だってすることが出来てしまうことです。定義のない概念を、あたかも数学的な概念のように等式で結んで議論することで、簡単に矛盾を導くことが出来てしまいます。例えば無限和という概念を考えましょう。これには数学的な定義がありますが、それを無視して勝手に数式を組んでみます。

例2(無限和の誤った使用)
無限和\( \sum_{n=0}^{\infty} (-1)^n = 1 - 1 + 1 - 1 + \cdots \)\( S \)と置く。すると\( S = (1 - 1) + (1 - 1) + \cdots = 0 + 0 + \cdots \)なので\( S = 0 \)である。ところが\( S = 1 + (-1 + 1) + (-1 + 1) + \cdots = 1 + 0 + 0 + \cdots \)なので\( S = 1 \)であることも分かり、矛盾する。この他にも、\( 1 - S = 1 - (1 - 1 + 1 - 1 + \cdots) = 1 - 1 + 1 - 1 + \cdots = S \)となるので、移項して\( 1 = 2S \)、つまり\( S = \frac{1}{2} \)を得る。このように、\( S \)は色んな数になってしまう。

上の議論は何がいけなかったのでしょう? 「\( S \)が振動するから」という回答には、振動すると何がいけないのかを聞いてみたいと思います。「\( S \)が数ではないから」という回答には、数の定義を聞いてみたいと思います。「この無限和は\( S \)と置けないから」という回答には\( S \)という文字で置く行為がいつ正当化されるのかを聞いてみたいと思います。そういう問答を繰り返せば、いずれは1つの問題として、そもそもこの無限和自体が未定義であることに行き着くと思います。未定義なものの性質は証明できないので、未定義なものを含む等式が成立するか否かを問うこともできないというわけです。

これはあくまで分かりやすい例なので、同じ過ちをする人は少ないかもしれません。しかしもっと難しい数学の中で似たような議論が現れたらどうでしょう。以下ではもう少し「数学っぽい」見た目の議論で誤ってみます。

例3(冪級数の誤った使用)
関数\( f(x) \)を冪級数\( \sum_{n = 1}^{\infty} \frac{x^n}{n} \)で定義する。\( f(x) \)を微分すると\( \sum_{n = 1}^{\infty} (\frac{x^n}{n})' = \sum_{n = 1}^{\infty} x^{n-1} = 1 + x + x^2 + \cdots \)となる。\( 1 + x f'(x) = 1 + x(1 + x + x^2 + \cdots) = 1 + x + x^2 + \cdots = f'(x) \)となるので移項して\( 1 = (1-x)f'(x) \)となり、すなわち\( f'(x) = \frac{1}{1-x} \)となる。\( f(0) = \sum_{n = 1}^{\infty} \frac{0^n}{n} = 0 + 0 + \cdots = 0 \)\( f'(x) = \frac{1}{1-x} \)から、\( f(x) = - \log \lvert 1-x \lvert \)であることが分かる。特に\( f(2) = - \log \lvert (1 - 2) \rvert = - \log 1 = 0 \)となる。ここで\( f(x) \)の定義に戻ると\( f(2) = \sum_{n = 1}^{\infty} \frac{2^n}{n} \)となり、いかなる正の自然数\( n \)に対しても\( \frac{2^n}{n} > 0 \)であることから、\( f(2) > 0 \)となる。これは\( f(2) = 0 \)に反し、矛盾する。

上の議論の問題点は何でしょうか? 関数や冪級数や微積分に慣れている人ならば即座に気付けるかもしれませんが、そうでないと分からないかもしれませんね。上の議論は数学的な議論ではなく、未定義なものを差し込むことで数学的に意味を持たない等式を混ぜ込んだ、紛い物の議論です。そういった議論を避けるためにも、概念には厳密な定義を与える必要があります。

それでは、どのように数学的概念を定義していけばよいでしょうか? 以下では数学の定義の方法を、より基礎的な理論へ還元していきます。



集合の定義

さて、数学的な概念を定義する上で、集合が便利であるという話をしました。しかしながら集合を用いればそれですぐに厳密に定義できるわけではありません。集合を扱う際も、定義の仕方に気を付けなければ簡単に矛盾を導いてしまいます。例えば次の有名なパラドックス*4を見てみましょう。

例4(ラッセルのパラドックス)
集合\( R \)\( x \notin x \)なる集合\( x \)全体とする。この時、\( R \in R \)\( R \notin R \)のどちらが成り立つだろうか? \( R \in R \)と仮定すると、\( R \)の定義から\( x = R \)\( x \notin x \)を満たすことになり、すなわち\( R \notin R \)となり矛盾する。逆に\( R \notin R \)と仮定すると\( x = R \)\( x \notin x \)を満たすので、\( R \)の定義から\( R \in R \)となり矛盾する。つまり、\( R \in R \)としても\( R \notin R \)としても矛盾してしまう。

上の議論は何が問題だったのでしょうか? それは、\( x \notin x \)なる集合\( x \)全体が集合をなすという前提です。集合が素朴な集まりとしていつでも定義できるようにしてしまうと、矛盾が生じてしまうのです。つまり、集合の理論で矛盾を生じさせないためには「いかなる集まりも集合をなす」といったような強い公理を課すことが出来ず、どのような集まりが集合をなすかにある程度制約を加える必要があるということをこのパラドックスが教えてくれたわけですね。実際にこのパラドックスを避けられるくらい制約を受けているような相対的に弱い公理のみを列挙したものが通常の集合論の公理であり、それらの公理を扱う理論が公理的集合論というわけです。つまり、公理的集合論の上では、集合を定める論理式に条件*5がついており、例えば\( R \)を「定義」する\( x \in x \)という論理式はその条件を満たさないということです。



論理式の定義

以上で見たように集合を定義する上で重要なのは、先程の\( x \notin x \)を始めとする論理式という概念です。論理式とは大雑把には命題のことだと思って下さい。数学的概念を厳密に定義するために集合を使い、集合を厳密に定義するために論理式を使うので、全てを厳密に定義するには当然「命題」という概念も定義しなければなりません。命題とは文字列であるので、つまりはどのような文字列が命題であるかを定義する必要があるわけです。

意味を持つ文字列を全て命題にすればいいでしょうか? 例えば「この文章は誤っている」という文章は意味を持ちますが、これを通常は命題とは言いません。命題とは大雑把に、真偽の問える文章のことです。先程の文章を\( P \)と置くと、\( P \)が真であるならば\( P \)の定義から\( P \)は偽となり矛盾し、逆に\( P \)が偽であるならば\( P \)の定義から\( P \)は真となり矛盾します。\( P \)のような、自分自身に言及した文章を自己言及文と呼びます。

自己言及文を避けるために、命題に現れる名詞や述語に制限を加えます。例えば集合論では名詞に集合のみが許容され、述語には\( = \)\( \in \)のような集合に対して意味を持つ関係のみが許容されます。自然数論では名詞に自然数のみが許容され、述語には\( = \)\( \leq \)等のような自然数に対して意味を持つ関係のみが許容されます。そうすると、「この文章」のような集合や自然数を表さない文字列が名詞として介入することが出来ないため、自己言及文を最初から避けることが出来ます。

しかし名詞や述語に制約を加えて自己言及文を避ければ何でも好き放題出来るわけではありません。例えば平仮名と片仮名と漢字とアルファベットと\( 0{} \)から\( 9 \)までの数字と\( + \)\( \times \)\( ( \)\( ) \)\( [ \)\( ] \)\( = \)と否定記号\( \neg \)のみを使った文字列で表せるような、自然数を動く変数\( x \)に関する条件式\( P(x) \)*6の全体を考えてみましょう。

例5(対角化のパラドックス)
条件式\( P(x) \)を記述するために使用が許容されている文字は有限種類であるので、それらを組み合わせて作れる文字列は可算無限個である。従って、そのような条件式\( P(x) \)全体を\( P[0](x) \)\( P[1](x) \)\( P[2](x) \)、……、と並べて網羅することが出来る。すると「\( \neg P[x](x) \)」という文章もまた自然数を動く変数\( x \)に関する条件式となるので、それ自身もまた、自然数の定数\( n \)を用いて\( P[n](x) \)と表せることになる。さて、\( P[n](x) \)\( x=n \)を代入した命題\( P[n](n) \)が意味を持つ筈である。しかし\( P[n](x) \)の定義から、\( P[n](x) \)は「\( \neg P[x](x) \)」という命題に他ならないので、\( P[n](x) \)\( x = n \)を代入した\( P[n](n) \)は「\( \neg P[n](n) \)」という命題になってしまう。\( P[n](n) \)が真であると仮定すると\( \neg P[n](n) \)が真ということなので\( P[n](n) \)は偽となり矛盾する。逆に\( P[n](n) \)が偽であると仮定すると\( \neg P[n](n) \)が偽ということなので\( P[n](n) \)は真となり矛盾する。

上の議論では何がいけなかったのでしょうか? これは、自然数の命題を定義する上でやってはいけない操作を途中で行ってしまった結果なのです。それは何かと言うと、\( P[0](x) \)\( P[1](x) \)\( P[2](x) \)、……、という自然数の体系の外で定義されるメタな列を用いて構成された\( P[x](x) \)という文を自然数の命題として扱っていることです。仮に\( P[0](x) \)\( P[1](x) \)\( P[2](x) \)、……、という条件式たちが自然数のみを名詞とする適切な文章で与えられているとしても、それを並べる方法自体は自然数のみを名詞とする適切な文章で与えることが出来ず、結果的に\( P[x](x) \)という文は自然数のみを名詞とする適切な文章の範疇から出てしまっているのです*7

少し難しかったかもしれませんね。同様の問題を孕む、もう少し分かりやすい例を見てみましょう。やはり平仮名と片仮名と漢字とアルファベットと\( + \)\( \times \)\( ( \)\( ) \)\( [ \)\( ] \)\( = \)と否定記号\( \neg \)のみを使った文字列で表せるような、自然数を動く変数\( x \)に関する条件式\( P(x) \)を考えます。

例6(ベリーのパラドックス)
自然数\( n \)に対し命題\( x = n \)と同値であるような命題\( P(x) \)の文字数の最小値を\( \ell(n) \)と置く。例えば\( n = 1 \)の時は「\( x = 1 \)」の3文字が最小なので\( \ell(1) = 3 \)であるが、\( n = 100000000000000000000 \)は「\( x = 100000000000000000000 \)」の23文字よりも「\( x \)\( 10 \)\( 20 \)乗である」の11文字の方が短いので、\( \ell(100000000000000000000) \leq 11 \)である。ここで、\( 23 \leq \ell(x) \)であるような自然数\( x \)が存在する。何故ならば、条件式\( P(x) \)を記述するために使用が許容されている文字が有限種類なのでそれらを用いて表される22文字以下の文字列は有限個しかなく、それに対して自然数は無限個存在するからである。そのような自然数\( x \)の中で最小のものを\( n \)と置く。すると「\( x \)\( 23 \leq \ell(x) \)を満たす最小の自然数である」という22文字の条件式\( P(x) \)\( x = n \)と同値なので、\( \ell(n) \leq 22 \)となる。これは\( 23 \leq \ell(n) \)に反し、矛盾する。

今度は問題点が分かったでしょうか? \( \ell \)という「関数」が自然数の体系の外にあるメタな対象であるので、それを用いて表される\( P(x) \)は最早自然数の体系の中にない文章であり、つまり自然数のみを名詞とする適切な文章をなしていないのです。

このように、どのような文章が体系内の命題として適切であるかをきっかり決めることで、既存のパラドックスを回避することが出来ます。そういった文章の適切さを定義する上で、「形式言語」という言語と「述語論理」という論理体系が役に立ちます。そして述語論理を用いて記述される公理的集合論においては、集合についての命題という概念が厳密に定義され、上記のようなパラドックスが自然に回避されているのです。形式言語や述語論理については第2章で簡単に説明します。

以上で、近代的な数学における定義が最も基礎的な述語論理まで還元されました。述語論理で論理式という概念が定義され、論理式を用いて集合という概念が定義され、集合を用いて数学的概念が定義され、こうして厳密に骨組みを与えておくことで、未定義なものに対する議論に付随する矛盾を避けることが出来るのです。




*1 正則関数の一致の定理という定理や、適切な条件下で収束概念が定義されて一意性を持つという命題など、概念の定義を補助するために必要な命題のことです。
*2 ただし論証できるとしても、多くの場合は時間の無駄になると思いますのでご注意下さい。
*3 あえて「非自明な」と述べているのは、論理体系さえ固定されていれば変数を含む自明な命題が証明可能だからです。例えば自然数&mathjax{n};に対して、&mathjax{n};の値が未定義でも&mathjax{n = n};が証明可能です。
*4 cf. [[ラッセルの背理>等号の定義#russel]]
*5 cf. [[集合に対する分出公理>条件式の定める部分集合の存在#comprehension]]
*6 例えば「&mathjax{x = y^2 + 2};を満たす自然数&mathjax{y};が存在する」という文字列です。
*7 ちなみにこの問題を適切に解決して得られる同様の文が、ゲーデルの不完全性定理の証明に使われます。