<   2018年 02月 ( 6 )   > この月の画像一覧

命題論理と一階述語論理

論理学の本を読んでも命題論理と(一階)述語論理の関係がもうひとつよくわからない。例えば、∀x.P(x) というような命題は、領域 D の要素が有限個ならば

∀x.P(x) = P(a1) ∧ P(a2) ∧ ... ∧ P(an)

のように置き換えることができる。しかし、領域 D が無限集合の場合は論理積の項は無限になってしまうのでこのやり方は使えない。このように述語論理と命題論理の関係がいまひとつあやふやなのに、述語論理は命題論理の拡張であるといわれても不満が残る。

これは、命題論理も述語論理も公理系で論じられるからだ。つまり、命題論理の公理に、量化子を加えた公理から組み立てたものが述語論理とされている。こういう意味で述語論理は、命題論理の拡張なのである。公理と推論で体系を組み立てていくやり方は数学の王道だが、このやり方だと、論理とは何かという具体的なイメージを作るのが難しい。論理の本質とは何かというすっきりしたイメージが欲しいのだ。

実は、述語論理とは何かという問いには集合におけるベン図ですべてを答えることができる。論理演算と集合演算は同値なのだ。つまり、ラッセルのパラドックスによって素朴集合論から追放された、命題関数と集合を同値と考える内包公理は、矛盾を起こさないようにできるのだ。

集合がどのような命題関数によっても、内包的に定義できれば、論理的推論はそのまま集合の演算となり、その逆も可能だ。しかし、素朴集合論ではラッセルのパラドックスによって無制限の内包公理は矛盾を引き起こす。ところが、発想を変えれば、無制限の内包公理を矛盾なく採用することができる。つまり、無制限の内包公理が矛盾を起こさないような論理のモデルを作ればいいのだ。

内包公理が矛盾を起こさないような論理のモデルは次のようになる。

まず、対象を集めた素朴集合論の意味での集合を領域 D として考える。この領域Dの部分集合全てを集めた集合をべき集合 2^D とする。領域 D が有限集合の時はこれらの存在は明らかだが、領域 D の要素が無限にあっても 2^D は存在すると考える。

この領域 D において、述語 P(x) を考える。P(x) は領域 D を定義域とし値域が2値集合 {True, False} であるような関数である。領域 D の任意の要素 a について P(a) は 必ずTrue または False の値をとる。このような P(a) は命題である。すなわち、命題 P(a) は必ず True または False の値をとるので領域 D においては命題は排中律をみたす。

P(a) の排中律によって、内包的定義 {x| P(x) が真} は領域 D の部分集合を定める。これを述語 P(x) の真理集合 P という。術後 A(x) と B(x) の表現が違ってていてもその真理集合 A, B が一致する場合この二つの述語は同等と考える。このことは、領域 D の実質的な述語 P は 2^D の要素で類別できることが分かる。したがって、領域 D に関する述語は 2^D の要素と同一視できる。

A(x) ∧ B(x) のような複合命題の真理集合は、A ∩ B のような真理集合の演算結果と一致する。したがって、領域 D の論理演算は、2^D の集合演算に置き換えることができる。したがって、領域 D についての論理演算は 2^D の集合演算に置き換えて議論することができる。領域 D における論理的議論は、領域 D と 2^D における集合の議論として集合論の立場に置き換えられる。

この領域 D は通常の集合でなくてはならない。つまり、D の任意の要素 a について P(a) が真となるが、領域 D に属さない対象 b については P(b) が偽となるような述語 P(x) が存在し、任意の述語 Q(x) に対し領域 D の任意の対象について Q(a) が必ず真または偽の値をとらなければならない。この定義からは、すべての集合の集合は領域にはなりえない。それはその要素である「自分自身を要素として含まない集合の集合」は、「自分自身を要素として含まない」という述語もその否定も充足しないからだ。

これは、集合とは何かという問いへの答えでもある。集合とは「任意の述語 P(x) とその集合の任意の要素 a について必ず P(a) が真または偽の値をとる」対象の集まりである。言葉を変えると集合とは、「その任意の要素と任意の述語の対からなる命題について排中律が存在する要素の集まり」である。

しかし、これは、領域 D が「自分自身を要素として含まない集合」や「自分自身を要素として含む集合」を要素としてとりえないということを意味しているのではない。領域 D の要素にそのような集合が含まれる場合を考えることはできる。ただ、領域 D は「自分自身を要素として含まない集合の集合」を要素としては含まないだけだ。領域 D の部分集合として「自分自身を要素として含まない集合の集合」を考えることはできるが、そのようなものは領域 D の要素としては存在しない。

この領域 D はベン図でいうところの全体集合である。全体集合がなければ、集合 A の補集合は無意味になる。それだけではなく、全体集合が存在することで、論理と集合は同値であると考えることができるようになる。つまり、全体集合である領域 D を考えることで、集合の内包的定義が可能になり、命題の排中律が成立するのである。論理とは、このような内包的定義と排中律が成立する領域 D の演算のことを意味している。

このように、述語 P(x) についての論理を考えるときにその対象を領域 D という集合に制限することによって、排中律と内包公理は成立し、述語 P(x) についての矛盾のない論理を組み立てることができる。領域 D に論理を制限するこのようなモデルではすべての論理的推論は矛盾を含まず、命題論理と述語論理の関係を明確に説明することができるが。それは別の記事になる。


[PR]
by tnomura9 | 2018-02-27 04:57 | ラッセルのパラドックス | Comments(0)

集合と論理

対象の集合を領域 D とする。領域 D のべき集合を 2^D とする。2^D の要素は D の可能な部分集合の全てを含んでいる。

述語 P(x) は 領域 D から2値集合 V = {True, False} への写像である。領域 D の任意の要素を a とすると、P(a) は必ず True, または False の値をとる。すなわち、命題 P(a) は必ず真または偽の値をとる。P(x) が真となるような D の要素を集めるとそれは D の部分集合になる。これを P(x) の真理集合と言う。一方 P(x) が偽の値をとるような D の要素 x も集合になる。これは P(x) の真理集合の補集合になる。述語 P(x) に対し領域 D の部分集合は、真理集合とその補集合に二分できる。つまり、真理集合と述語の真偽の間には同値関係が存在し、述語によって無制限の内包的定義で集合を定義できる。

命題 P(x) と領域 D のべき集合 2^D の関係を考えると、P(x)が真であるという条件は 2^D の要素と対応するが、P(x) の真理集合と Q(x) の真理集合が一致する場合、述語 P(x) と Q(x) は同等である。つまり、述語としての表現が変わっていても、真理集合が同じ場合、領域 D については P(x) と Q(x) は論理的に同値である。

べき集合 2^D の要素間の集合演算はべき集合 2 ^ D について閉じている。集合演算と論理演算の同値性を考えると、領域 D における述語 P(x) の全ての論理演算については演算可能である。集合の内包的定義に制限はなく、論理演算は全て真理集合と対応している。

このモデルでは、集合は全て内包的定義で定義され、領域 D におけるすべての論理演算は、べき集合 2^D の集合演算と置き換えることができる。これが本来の論理と集合の関係だったのではないだろうか。論理的推論はこのような領域 D の集合について用いられるときは矛盾を生じないのだ。

領域 D とラッセルのパラドックス

さて、それでは矛盾がないはずの内包公理が、どうしてラッセルのパラドックスを発生してしまうのかを考えてみる。そこで、まず、上に述べた領域 D に帰属関係を定める。領域 D の全ての要素について、2項関係 ∈ を定める。a が b に属しているとき a ∈ b は真値をとりそうでないとき偽値をとる。属しているという言葉は無定義用語だ、とくに要素と集合の帰属関係でなくてもいい。ただし、b を固定し x ∈ b が真となる要素 x を集めたときそれは一つの D の部分集合になる。これはまた 2^D の要素でもある。また、この集合は P(x) = x ∈ b という述語に対する真理集合でもある。

この2項関係は a ∈ a のような自己言及も禁止していないとする。そうすると領域 D の全ての要素について x ∈ x であるか x /∈ x であるかの二つのグループに分けることができる。これらは Q(x) = x ∈ x という述語の真理集合と、その真理集合の補集合だ。これらは確かに領域 D の部分集合である。すなわち、2^D の要素でもある。

ところで要素 b を固定したときに x ∈ b を満たす要素を集めるとそれは領域 D の部分集合だ。したがって、要素 b はその真理集合を代表しているという見方もできる。すなわち b は内包的定義が {x | x ∈ b} である集合と同一視してもいい。領域 D については全ての内包的定義による集合が 2^D の要素であるから。b の表す集合は存在する。

それでは内包的定義が {x | x /∈ x} であるような集合は存在するだろうか。それは上の議論から明らかに領域 D の部分集合として存在する。なぜなら領域 D の全ての二つの要素の間には二項関係が定義可能だからだ。領域 D の要素は確かに自分自身の間に帰属関係があるものと、自分自身の間には帰属関係がないものが存在する。これらはまた、べき集合 2^D の要素でもある。このことは R(x) = x /∈ x という述語が領域 D の部分集合を定めることを意味する。領域 D において「自分自身を要素として含まない要素の集合」はあきらかに存在する。

ところが内包的定義が {x | x/∈ x} となるような集合と同一視できる領域 D の要素は存在しない。なぜなら、そのような領域 D の要素を仮定するとラッセルのパラドックスが発生してしまうからだ。このことは内包的定義 {x | x /∈ x} を満たす領域 D の集合は存在するにも関わらず、そのような集合と同一視できる領域 D の要素は存在しないことを示している。これがラッセルのパラドックスの正体だ。

上にも述べたように領域 D において、そのすべての部分集合は述語で定めることができる。しかし、領域 D に帰属関係 ∈ を導入することによって発生する集合を代表する要素を、集合と同一視した場合はそうではない。そのような要素に対する集合を定めることができない述語も存在してしまう。そうすると、無制限な内包的定義では集合を定めることができないのではないかという議論が出てくる。しかし、そうではない。無制限な内包公理で領域 D の集合を定めることができる。無制限な内包的定義が適用できないのは、領域 D の集合を帰属関係で定義しようとした場合の集合と同一視できる領域 D の要素を考えた場合なのだ。

こういう風に考えると「集合とは物の集まりである」という素朴集合論の定義には罪がないことが分かる。それは、領域 D の要素間の帰属関係が全ての集合を定めることができると考えたことによる矛盾なのだ。つまり、領域 D の要素を集合と同一視しようとしたところに齟齬が発生したのである。

領域 D が有限集合の場合、明らかに領域 D の要素数だけで領域 D のべき集合 2^D の全要素を代表させることはできない。また、領域 D が無限集合であったとしても、領域 D の2項関係を考えたとき不動点が発生するためにラッセルのパラドックスが発生してしまう。領域 D の部分集合についての議論を、領域 D の要素の帰属関係だけで完結させようとすることが間違っているのだ。

自分自身を要素とするかしないか

こういう風に考えていくと「集合が自分自身を要素とするかしないか」というのは、集合にとって本質的な性質ではないような気がする。集合が自分自身を要素とするかしないかという問いは、領域 D に所属関係という2項関係を導入しなければ発生しない問だからだ。「自分自身を要素として含まない集合の集合は自分自身を要素として含むか」という問いは、集合の一般的な性質ではなく、領域 D に所属関係を導入して領域 D の要素と集合を同一視したことによる副次的な性質についての問いではないだろうかと思う。

[PR]
by tnomura9 | 2018-02-05 16:22 | ラッセルのパラドックス | Comments(0)

分出公理

ツェルメロ=フレンケルの公理系 (ZF: Zermelo-Fraenkel) についてイメージを作ってきたこのシリーズの記事も、外延性の公理、空集合の公理、対の公理、和集合の公理、冪集合公理、無限公理を調べてきて、分出公理をのこすのみになった。ウィキペディアには分出公理の代わりに置換公理を上げてあるが、分出公理のほうがイメージを作りやすいのでこちらのほうを調べてみる。

公理的集合論の抽象的な公理について考えてみてきたが、意外にイメージを作りやすかった。外延性の公理、空集合の公理、対の公理、和集合の公理、冪集合公理によって、空集合を出発点にして再帰的に無限に有限集合を作ることができる。また、無限公理によって、それらの要素を無限に含む無限集合が定義できる。しかし、集合という対象はこれらの公理で作り出すことができるが、それらに論理的演算を適用する方法は定義されていない。それを行うのが分出公理だ。

ところで、公理的集合論が考え出された一番の理由はラッセルのパラドックスだ。ナイーブな内包公理を素朴集合に適用するとラッセルのパラドックスが発生してしまう。問題は、上の公理で規定された集合がラッセルのパラドックスを除外できているかどうかだ。

上の公理で規定された集合のうち、有限集合は自分自身を要素として含むことはない。また、これらの集合で作られる自然数の集合の要素もすべて有限集合なので、無限集合である自然数の集合は自分自身を要素として含むことはない。したがって、「自分自身を要素として含まない集合の集合は自分自身を要素として含むか」というラッセルのパラドックスの問いは成立しない。

また、すべての集合の集合は、空集合から生成されるのは有限集合ばかりなので、すべての集合の集合という無限集合はそれには含まれない。したがって、空集合から生成される有限集合全てに自然数の集合という無限集合を合わせてもすべての集合の集合を公理系から生成することはできない。したがって、カントールのパラドックスもこれらの集合では発生しない。

あとは、制限された内包公理がそのようなラッセルのパラドックスのような困った集合を作り出さなければいい。制限された内包公理である分出公理は次のようになる。
分出公理 任意の集合 X と A を自由変数として使用しない論理式 ψ(x) に対して、X の要素 x で ψ(x) をみたすような x 全体の集合が存在する
これはざっくりというと、何か既知の集合を全体集合と考えて固定すると、その要素の集合を内包的定義で定めることができるということだ。すべての集合の集合とか、自分自身を要素として含まない集合のようなものは、もとになる全体集合を仮定していないので集合として定義できない。

内包公理と集合との同等性があれば、論理式をそのまま集合に置き換えて論議することも、逆に集合の議論を論理式に変換することも可能になるので便利だが、そうは上手くいかなかった。しかし全体集合を考えることで、その全体集合の中では論理式と集合の同等性を保証することができるということで実用的にはいろいろな数学的な議論に集合を利用することができる。

全体集合を考えるという制限を課すことで、公理的集合論に安全に論理を導入できることになった。

全体集合の重要性は、集合の演算を考えるときのベン図のことを考えればわかる。命題は真か偽かのどちらかの値をとる。それに対応する真理集合は真理集合とその補集合が必要になるが、全体集合がなければ補集合を定めることができない。二値論理を集合に適用するためにはどうしても全体集合が必要なのだ。

公理的集合論の世界は、このような、空集合から生成される無限の有限集合と自然数の集合という無限集合と、全体集合という制限の下での内包公理からなる、無矛盾な集合の世界のようだ。

公理的集合論についての記事はこれで終わるが、この記事を書こうと思った理由は、公理的集合論の公理が大半が再帰的定義だということに気が付いたことだ。再帰関数の定義は抽象的になりやすくイメージを作りにくい。

fact 1 = 1
fact n = n * fact (n-1)

また、再帰関数の値の計算は、次に示す階乗の計算のように関数値を再帰的に還元することによって求められる。

fact 3 = (3 * (fact 2)) = (3 * (2 * (fact 1))) = (3 * (2 * (1))) = 6

ところが、これは base case から出発して生成的に計算していくと途端に見通しが良くなる。

fact 1 = 1
fact 2 = 2 * (fact 1) = 2
fact 3 = 3 * (fact 2) = 3 * 2 = 6

したがって、公理的集合論の抽象的な定義も base case から生成的にその定義で作られる集合を調べていったら分かりやすいのではないかと考えたのだ。この目論見は上手くいったのではないかと思う。一連の記事によって公理的集合論の7つの抽象的な公理から具体的なイメージを作ることに成功したような気がする。

もちろん専門家ではないので基礎知識も少なく間違ったことを言っているのかもしれないが、少なくとも、再帰的定義を生成規則として捉えることで、抽象的な公理から具体的イメージを作り出すことが比較的容易にできるのではないかという問題提起にはなったのではないかと思う


[PR]
by tnomura9 | 2018-02-03 21:14 | ラッセルのパラドックス | Comments(0)

無限公理

素朴集合論の公理のうち、空集合を定義する空集合の公理と、外延性公理、対の公理、和集合の公理、(有限集合に限定したときの)べき集合の公理からは、無限に集合を生成することができる。ただし、このようにして作られる集合はすべて有限集合だ。

これは、自然数は無限にあるが、個々の自然数は有限であることとよく似ている。base case から初めて生成規則で新しい要素を作成する再帰的方法では、無限に操作を続けることはできるが、生成される要素は全て有限集合だ。

しかし、このままでは公理的集合論には無限集合を含めることができないことになる。自然数のような無限集合は数学では普通にあらわれるので、無限集合が扱えない集合論は価値が低い。

そこでこの集合の世界に無限集合を導入するための公理が次に述べる無限公理だ。無限公理は次のようになる。
無限公理 空集合を要素として含み、かつ、任意の要素 x に対して x ∪ {x} を要素に持つ集合が存在する
一読してもどのような集合か全くイメージできない。しかし、任意の要素 x に対して x ∪ {x} を要素に持つという部分が再帰的定義になっている。このような場合は base case から出発して再帰的定義を要素の生成規則と考えて集合を作ってみると分かりやすい。

この定義で定められる集合を X とすると、X の要素は再帰的定義「任意の要素 x に対して x ∪ {x} を要素に持つ」によって生成されることが分かる。そのための出発点である base case は明らかに空集合 {} である。すなわち、

{} ∈ X

である。X の要素 {} に再帰的定義を適用すると {} と {{}} の和集合が X の要素として含まれる。{}の要素は何もないし、{{}} の要素は {} だから、再帰的定義で作られる新しい要素は {{}} である。すなわち、

{}, {{}} ∈ X

である。さらに、この新しい要素 {{}} に再帰的定義を適用すると、新しい要素は {{}} と {{{}}} の和集合なので、{{}, {{}}} になる。従って、

{}, {{}}, {{}, {{}}} ∈ X

さらに、この要素の中で最も新しい {{}, {{}}, {{}, {{}}} に再帰的定義を適用すると、新しい要素は {{}, {{}}} と {{{}, {{}}, {{}, {{}}}} の和集合なので {{}, {{}}, {{}, {{}}}, {{}, {{}}, {{}, {{}}}} となる。すなわち、

{}, {{}}, {{},{{}}, {{}, {{}}}, {{}, {{}}, {{},{{}}} ∈ X

したがって、x ∪ {x} という再帰的定義で次々に successor を作っていくことができる。これは、公理的集合の世界に自然数を構築する時の方法と同じだ。このように再帰的定義で作られる要素は全て同じ集合 X に属すると定義するのが無限公理の目的だ。

無限公理以外の公理では、空集合から再帰的に集合を作り出し、その中に無限公理によって自然数の集合を再帰的に定義していることになる。ただし、空集合から再帰的に作り出された集合はすべて有限集合であり、無限公理による自然数の集合はそのどれにも含まれない。

無限集合は、他の公理によって定義される集合とは交点がない。ある意味集合ならざる集合を無限公理によって集合として容認しているとも言える。有限集合とは異なり、無限集合は一種のファンタジーではないかという気さえする。


[PR]
by tnomura9 | 2018-02-03 19:37 | ラッセルのパラドックス | Comments(0)

冪集合公理

公理集合論では冪集合公理によって、任意の集合の冪集合が存在する。
冪集合公理 任意の集合 X に対して X の部分集合全体の集合が存在する
X が有限集合の場合、冪集合の公理は明らかだ。Xの部分集合をつくるアルゴリズムが存在するからだ。たとえば、集合 X = {a, b, c} のとき、その部分集合を a を含むものと a を含まないものに分ける。

{a, ... }
{b, ...}

さらに、それぞれのグループで b を含むものと、b を含まないものに分ける。

{a, b, ...}
{a, c, ...}
{b, ...}
{c, ...}

さらに c についても同様のグループ分けをする。

{a, b, c}
{a, b}
{a, c}
{a}
{b, c}
{b}
{c}
{}

こうして X の全部の要素について検討すれば全ての X の部分集合を拾い上げることができるので、Xの冪集合は次のように定められる。

P(X) = {{a, b, c}, {a, b}, {a, c}, {b, c}, {a}, {b}, {c}, {}}

この手続は次のようにプログラム化できる。

Prelude> :{
Prelude| let
Prelude| pow [] = [[]]
Prelude| pow (x:xs) = (map (x:) (pow xs)) ++ (pow xs)
Prelude| :}
Prelude> pow [1,2,3]
[[1,2,3],[1,2],[1,3],[1],[2,3],[2],[3],[]]

これまで調べた、外延性の公理、空集合の公理、対の公理、和集合の公理、冪集合公理から構築できる公理的集合論の世界は、空集合 {} を base case にして {{}}, {{{}}}, {{}, {{{}}}}, などのように有限集合を無限に作り出していく集合の生成体系で、そのなかでは和集合の演算が導入されている。また、その中にはそれらの集合の冪集合も含まれる。

ただし、ここまでの公理で生成される集合はどれをとっても有限集合だ。集合論の目論見のひとつは無限集合を扱うことだから、この集合モデルに無限集合を取り込みたい。それを可能にするのが無限公理だが、これについては別に述べる。

また、この集合には自分自身を含む集合は存在しない。したがって、自分自身を含まない集合は自分自身を含むかという議論は成立しない。

この集合の世界には和集合の演算は存在するが、それ以外の共通部分などの演算は定義されていない。これは、この集合の世界に内包的な集合の定義を導入することによって、論理演算を集合に適用することが可能になる。これについても別に述べる。

この集合の世界の集合は全て空集合から誘導されたもので、通常の集合とは随分様子が違うが、{{}, {{}}} のようなものは要素を複数含む集合なので、通常の集合と共通な構造があるとも言える。この世界には自然数のような数学的対象は存在していないが、その中に自然数と同じような構造をこの世界の集合で構築することができるので、それを利用すれば自然数の構造を、この集合の世界に映し出すことができる。

結局、公理的集合論の目論見は、論理操作が可能で、矛盾もない集合の世界を構築し、その中に一般的な数学の構造を構築することなのだろう。


[PR]
by tnomura9 | 2018-02-02 08:02 | ラッセルのパラドックス | Comments(0)

対の公理と和集合の公理

公理的集合論の対の公理は次のようになる。
対の公理 任意の要素 x, y に対して x と y のみを要素とする集合が存在する
この公理で定義される集合の要素はつねに2個だ。

したがって、要素を1つだけ含む集合の定義は、この公理と外延性の公理を組み合わせる必要がある。つまり要素 a に対して集合 {a, a} が定義できるが、外延性の公理を適用するとこれは {a} と等しい。外延性の公理は次のようになる。
外延性の公理 A のどの要素を取っても B の要素であり、その逆も真である場合 A と B は等しい。
また、要素が a, b, c とあるとき、e = {a, b}, f = {b, c} の存在は対の公理で定義できるし、これに加えて g = {e, f} も集合である。ここで g に和集合の公理を適用すると、g = {{a, b}, {b, c}} なので h = {a, b, c} は集合である。このように対の公理と和集合の公理を組み合わせると、任意の(有限個)の要素をもつ集合が定義できる。和集合の公理は次のようになる。
和集合の公理 任意の集合 X に対して、X の要素の要素全体からなる集合が存在する
この操作は Haskell の concat 関数と nub 関数で実行できる。

Prelude> import Data.List
Prelude Data.List> nub $ concat [[1,2], [2,3]]
[1,2,3]

和集合の公理はまた、任意の集合の和集合が存在することを保証する。g = {a, b, c}, h = {c, d} という2つの集合があるときに、対の公理から i = {g, h} という集合を作ることができる。これに和集合の公理を適用すると j = {a, b, c, d} ができる。これは明らかに g と h の和集合だ。すなわち、公理的集合ではどの2つの集合についても和集合が集合として存在する。

これも次のように Haskell で確認できる。

Prelude> import Data.List
Prelude Data.List> let a = [1,2,3]
Prelude Data.List> let b = [3,4]
Prelude Data.List> let c = [a, b]
Prelude Data.List> nub $ concat c
[1,2,3,4]

和集合の公理はその名前の通り、公理的集合論の任意の2つの集合の和集合が存在することを保証する。

公理的集合論の公理は抽象的に書いてあるが、実際にはプログラムで実現できるような具体性もある。抽象的だと思って敬遠していただけだった。再帰的な定義は視点を変えて新しいデータを作るための生成規則だと考えるとイメージしやすい。

[PR]
by tnomura9 | 2018-02-01 16:48 | ラッセルのパラドックス | Comments(0)