Topic:論理と数学の基礎について
表題のテーマについて、多少文章を書いておこうと思う。ただ基本的には自分が物事を考えやすくするために作った体系に過ぎないので、論理学や集合論に物凄く詳しい人たちは、あまり細かいことは気にせず、生暖かく見過ごしていただきたいと思う。
論理の対象
編集論理的記述の対象になるものは何だろうか? これをまず、「すべての概念」、と呼んで見る。そして、このすべての概念を含んでいる、この世界の最大集合、そんなもの存在するの? 、という疑問は当然あるだろうけど、そこは気にせず無理やり考えて、これを、Any、 としてみよう。
そして、この の排他的な部分集合として、全ての有限リストの集合 、自分自身を含む集合全ての集合 、リストと集合以外の全ての素の概念の集合 、が、ある。
この 3つの集合の和集合は、当然 の部分集合だが、 をすべて満たすには少し足りない。
この残りの部分は、クラス、あるいは述語、(a1は自分自身を含まない集合である。) → S_1(a1) で示す。
これは、ラッセルが示したすべての自分自身を含まない集合の集合の問題を回避するための配慮だ。
S_1(a1) と の要素は、集合が集合だけで構成されるか、されない、他の対象を含むかの視点で、2種類の述語、あるいは集合に分けることができる。
の要素は n項の有限リストのことだが、そして成分としてリストを含むことを許す、というか、 のすべての要素が成分となりうるのだが、あるアルゴリズムによって、 2種の視点で 4つの集合に分けることができる。また、成分として、"空"も許す。
一つの視点は、全ての成分、そしてその成分がリストの場合はさらにその成分、をすべて取っていったときに、集合か の要素が現れるか否か。
もう一つの視点は、リストの成分がリストになっているとき、どんどん深く成分を取って並べていく作業が有限回で終わるか否か。
このことについては、例えば、こういうリストを考えていただきたい。
2項のリストで、第 1成分も第 2成分も自分自身、つまりこの 2項リストそのもの。
そして の要素はとりあえず、 5つに分類して、 5つの部分集合を作る。
- 実数
- ユークリッド空間上の点、ただし、全ての自然数で示されるn次元の空間上の点すべて
- 文字
- 現実世界の主体
- それ以外の概念
論理式
編集以下、「「ゲーデル・不完全性定理 "理性の限界"の発見」吉永良正 著(講談社ブルーバックス 1992/12/20 1993/1/25第2刷)」の記述を参考に、論理式とは何かを定義する。
この本は正当な権威ある論理学の教科書ではないだろうが、今回はまったく気にしない。
また以下の論理式の定義は、部分によってはこの本の記述そのまま、の場合もあるので著作権の問題をはらむが、引用…の要件はむしろ満たしていないが、学術的な普遍的な数学・論理学に関する記述と見なせると思う。
が、問題を感じる方がいらっしゃったら、指摘して頂くか、何らかのそれなりの対応を取っていただきたい。
定義自体を書く前に、今回の定義によって書かれた論理式の例を 3つ示す。
1. ∀x1(P1(x1)⇒P2(x1))
2. ∀x1∃x2P1(f1(x1,x2),a2)
3. ∃x1(∃x2(P1(x2,x1)∧∀x3¬P1(x3,x2))∧∀x2(P1(x2,x1)⇒∀x3((P1(x3,x2)∨P2(x3,x2))⇔P1(x3,x1))))
1.は、P1 ならば、P2 である。という主張でしょう。
2.は、実数の公理の一つを、論理式で表現した物。
3.は、 ZFC の VI. 、無限公理を論理式で示した。
論理式で使用する記号・文字
編集- 対象記号(定数) c1、c2、c3、c4、c5、……
- 関数記号 f1、f2、f3、f4、f5、……
- 述語記号 P1、P2、P3、P4、P5、……
- 自由変数 a1、a2、a3、a4、a5、……
- 束縛変数 x1、x2、x3、x4、x5、……
- 論理記号 ∧、∨、¬、∀、∃、holds、⇒、⇔、iff(いくつかあまり一般的ではない記号も含まれているが、詳しくは後述)
- 括弧とコンマ (、)、,
コンマは使わなくても論理式を構成できるが、括弧は意味の分別のために必要。
[項]の定義
編集(1) 対象記号と自由変数は項である。
(2) f が n変数の関数記号で T1、T2、……、Tn が項なら、f(T1,T2,……,Tn) は項である。
(3) (1)と(2)で得られるもののみが項である。
[論理式]の定義
編集(1) P が n変数の述語記号で T1、T2、……、Tn が項なら、P(T1,T2,……,Tn) は論理式である。とくにこれを[原始論理式]と呼ぶ。
(2) A,B が論理式の時、¬A 、(A∧B) 、(A∨B) 、(AholdsB) 、(A⇒B) 、(A⇔B) 、(AiffB) も論理式である。慣習的に、この構成で論理式が完成するなら、最後の括弧はつけない。
(3) A(a) が自由変数 a を含む論理式で、x が A(a) に現れない束縛変数である時、∀xA(x) 、∃xA(x) は論理式である。
(4) (1)、(2)、(3)によって得られるもののみが論理式である。
論理式の意味の簡単な説明
編集例えば、以下のような 2次方程式があるとします。
2*(x-1)*(x+2)=0
これをいま定義した論理式で書くと、
P1(f1(f1(c1,f2(a1,f3(c2))),f2(a1,c1)),c3)
になります。
しかしこれはこの 2次方程式の論理のひな型を示したものなので、等価なものにするためには、解釈、あるいは各記号に対象を代入しなければなりません。
つまり、対象記号には、c1=2、c2=1、c3=0、を代入し、関数記号には、f1=*、f2=+、f3=-、を代入し、述語記号には、P1=[=] を代入します。これで、この論理式が最初の 2次方程式を示したことになりますよね。
この論理式に、上の項目の (3) の操作を加えるとどうなるでしょうか。つまり、こうですね。
∀x1P1(f1(f1(c1,f2(x1,f3(c2))),f2(x1,c1)),c3)
この論理式に今現在の解釈を加えると、
全ての x において 2*(x-1)*(x+2)=0 である。
と、いう命題になりますよね。
2 次方程式は普通複素数の範囲で考えていますが、仮に実数の範囲で考えたとしても、この命題は偽ですよね。
三値論理
編集いまこういう不等式があるとして…
6 <= x
これは論理式にすると、
P1(c1,a1)
ですよね。
そして、P1:<=、c1:6、の解釈を加えると、自由変数 a1 を持つ開いた論理式の解釈として、最初の不等式を示したことになりますよね。
そしてこの命題の意味自身を考えると、簡略化してこの論理式で示せますよね。
P2(a1)
ここで、P2:6<= 、という事になって…
そこでですね、今この論理式を書き換えて閉じた論理式にしてみると…
P2(c1)
c1 は対象記号ですから、具体的な対象が入ります。例えば c1:365.2425 にするとこの解釈では、
6 <= 365.2425
という式、命題を示しますよね。そしてこの命題の真偽値は、真です。
そこで…今この解釈の述語命題、 P2() において、c1に代入する対象として複素数を選んでみるとどうなりますかね…。例えば c1:5.6+3.15*i とか…
6 <= 5.6+3.15*i
この式、命題の真偽値は何ですか?
これは真でも偽でもなく、意味を持たない式ですよね。
ですからこういう時に、この命題の真偽値は第3の値、Nonsense、「不適切」であり、「真」でも「偽」でもない、こういう考え方の3値論理を取り入れると、物事がすっきり理解しやすくなるだろう、という主張です。
論理記号
編集さて、確かに説明は少し足りないと思うけど、次に、論理記号の真理表を書いておきます。ふつうはもちろん 2値の表ですが、ここでは 3値の真理表を書きます。
A | ¬A | B | A∧B | A∨B |
1 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | -1 | -1 | -1 |
0 | 1 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 0 |
0 | 1 | -1 | -1 | -1 |
-1 | -1 | 1 | -1 | -1 |
-1 | -1 | 0 | -1 | -1 |
-1 | -1 | -1 | -1 | -1 |
ここで、¬ は (~でない)、∧ は (~かつ~)、∨ は (~または~)、ですね。
そして、 1 は真(True)、0 は偽(False)、 -1 は不適切(Nonsense)、です。
そして次にこの真理表を示します。ちなみに ¬A∨B は A⇒B(AならばB)と完全に等価です。
A | B | ¬A∨B | A holds B |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | -1 | -1 | 0 |
0 | 1 | 1 | 1 |
0 | 0 | 1 | 1 |
0 | -1 | -1 | 1 |
-1 | 1 | -1 | 1 |
-1 | 0 | -1 | 1 |
-1 | -1 | -1 | -1 |
次はこの真理表。 A⇔B(AはBの必要十分条件)は (A⇒B)∧(B⇒A) であり、 (¬A∨B)∧(¬B∨A) とも全く等価です。
A | B | A⇔B | A iff B |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | -1 | -1 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | -1 | -1 | 0 |
-1 | 1 | -1 | 0 |
-1 | 0 | -1 | 0 |
-1 | -1 | -1 | -1 |
再び、論理の対象とは何か?
編集さて、以上で論理式についてはかなり明快に示してきたと思いますが、論理式とはつまり、論理的言及のひな型を与えるものです。
そして特定の論理式を解釈して意味を与えたとき、これはそれぞれの述語記号と関数記号と対象記号に具体的な対象、意味を当てはめて代入したとき、自由変数を持つ開いた論理式の場合は述語に、自由変数を持たない閉じた論理式の場合は、真偽値を持つ命題になり、数学的記述、あるいは言葉そのものになります。
閉じた論理式から作られる命題には、真偽の判断が可能ですが、この文章では私は、三値で判断するのが良いと主張しました。と、いうのは開いた論理式を解釈したときに作られる述語、これは全体クラスとその部分クラスである真理クラスで構成されているものですが、その述語に関して特定の対象を当てはめて意味を考えると、その対象が述語の真理クラスの要素である時は真、全体クラスの要素ではあるが真理クラスの要素でない場合は偽、全体クラスの要素でもない場合はナンセンス、の、判断が下されるはずだからです。
さらに、場合によっては述語として全体クラスと真理クラス、両方とも空集合である論理記述が可能ですが、この述語を量化記号を使って真偽値を判断する命題に変えたとき、その判断は、第三値、Nonsense と考えて良いのではないでしょうか。
さて、そこでですね…まず、定義に従って様々な論理式を作る事が出来る。そしてその論理式に解釈を当て嵌める、と、いう事は、事実上、述語記号と関数記号と対象記号に、具体的な対象を"代入"することになるんです。
そこで今問題にしたいのは、その時に代入される対象とは一体何なのか?という事です。
まず、対象記号の場合は、割と明確で、これは最初の項目で書いた集合 の要素、全てが代入可能でしょう。
初歩的な数学では複素数に達せず、実数だけで考えることが多いですが、まず、ここで提示した体系では の部分集合として、全ての実数の集合を用意している…。しかし一方全実数の集合は、集合の集合としても表現できるだろう。 ZFC の公理に基づいて超限順序数としての全自然数の集合のべき集合を取ることで、S_1()の要素、なおかつ集合だけで構成されている集合として、全実数の集合を得ることができる…。この二つの全実数の集合は濃度が同じで全単射を取ることができますよね…。
ですから集合論に精通している人達はもう、空集合と、集合という入れ物だけで全数学を考えることができるのだろうけど、私はちょっとね…。まず自分自身がそれほど現代の集合論を知らないというのもありますが、一方で論理的言及というのは、数学だけに限らないのだから、例えばあるWeb上の数学に関するサイトで読んだことがあるのですが、集合の要素として、箱だけで作られた集合だけではなくて、例えばそこの電信柱にいるカラスとか、そういう存在を要素として持てないのはおかしいんじゃあない?と、いう気持ちがあります。
また、複素数に関しては、今回の文脈では、実数の 2項リストの集合、 の要素で、リスト以外で構成され、有限回で展開できるリストのみの集合が全複素数の集合になりますが…。そしてこの全複素数の集合自体は、集合だけでは構成されていない、 S_1(a1) を満たす対象ですよね…。
しかし、本流、一般的な数学の文脈では、別に全複素数の集合があって、 2項リスト (a,b) は集合 {{a},{a,b}} に還元できますから、S_1(a1) を満たす集合で、集合だけで構成されている対象が、全複素数の集合のイメージになりますよね…。
では、関数とは?
編集関数というのは、リストのみで構成された集合でしょう。今回の論理式で関数記号として扱われる写像は、価数、あるいは項数がありますよね。ですから各自然数 n に対応する全ての n価関数の集合 を考えることができます。
これは自然数 n の関数になって、以下の命題で規定できます。
∀x1∀x2 ( ( x1∈ holds ( ∀x3 (∃x4(x3=[car.~.cad^[n-2]r](x4)∧x4∈x1) ⇔ x3∈ ) ∧ ∀x3∀x4 (x3∈x1∧x4∈x1∧[car.~.cad^[n-2]r](x3)=[car.~.cad^[n-2]r](x4)⇒x3=x4) ∧ ∃x3 (x3∈x1∧¬cd^[n-1]r(x3)=()) ) ) ∧ ( (∀x3 (∃x4(x3=[car.~.cad^[n-2]r](x4)∧x4∈x1) ⇔ x3∈ ) ∧ ∀x3∀x4 (x3∈x1∧x4∈x1∧[car.~.cad^[n-2]r](x3)=[car.~.cad^[n-2]r](x4)⇒x3=x4) ∧ ∃x3 (x3∈x1∧¬cd^[n-1]r(x3)=()) ) holds x1∈ ) )
幾つか説明すると、まず、 [car.~.cad^[n-2]r]() と cd^[n-1]r()は、特定の具体的な関数です。関数の名称は、プログラム言語 LISP の関数を意識してこうしたのですが、このことに興味のない方は、特に気にせず、ちょっと長い関数の固有名詞だと思っていただければ…。
関数の機能は、全ての 2項以上のリストを定義域として、 [car.~.cad^[n-2]r]() はその最後の成分を削除して、 1項少ないリストを作り、 cd^[n-1]r() は逆に最後の成分だけの 1項リストを作ります。
も関数で、 n項の空を成分にしないリスト全ての集合を作ります。() は一項の空リストですね。
つまり、この命題の意味は、n価関数、 の要素である集合とは、例えば 1価の関数の場合、
{(0,a),(1,),(-1.b),(2,c),(-2,),(3,d),……}
のようにすべての の要素である独立変数に対応する従属変数を、リストで示したものを集めた集合で、最終成分が空の場合は、その独立変数は定義域に含まれていないことを示しています。
述語は関数の特別な場合だろう
編集つまり、全 n項述語の集合 ( の部分集合)は、こう規定できる。
∀x1∀x2 ( ( x1∈ holds ( ∀x3 (∃x4(x3=[car.~.cad^[n-2]r](x4)∧x4∈x1) ⇔ x3∈ ) ∧ ∀x3∀x4 (x3∈x1∧x4∈x1∧[car.~.cad^[n-2]r](x3)=[car.~.cad^[n-2]r](x4)⇒x3=x4) ∧ ∀x3 (x3∈x1⇒(cd^[n-1]r(x3)=1∨ cd^[n-1]r(x3)=0∨ cd^[n-1]r(x3)=-1)) ∧ ∃x3 (x3∈x1∧¬cd^[n-1]r(x3)=-1) ) ) ∧ ( ∀x3 (∃x4(x3=[car.~.cad^[n-2]r](x4)∧x4∈x1) ⇔ x3∈ ) ∧ ∀x3∀x4 (x3∈x1∧x4∈x1∧[car.~.cad^[n-2]r](x3)=[car.~.cad^[n-2]r](x4)⇒x3=x4) ∧ ∀x3 (x3∈x1⇒(cd^[n-1]r(x3)=1∨ cd^[n-1]r(x3)=0∨ cd^[n-1]r(x3)=-1)) ∧ ∃x3 (x3∈x1∧¬cd^[n-1]r(x3)=-1) holds x1∈ ) )
述語記号に代入する述語集合とは、イメージの例として、例えば 2項述語の場合、こういうものだろう。
{(0,0,1),(0,1,-1),(0,-1,0),(0,2,0),……,((0,1),0,-1),((0,1),1,0),((0,1),-1,-1),……}
集合の要素のリストの最終成分が、真偽値を示している。
述語記号と関数記号を対象として扱う
編集そこで、この論理式の構成では、解釈として代入する要素として、対象と関数と述語の3種類があって、量化が許されるのは対象記号が配置可能な位置のみですが、関数と述語も量化して議論できると何かと都合が良いと考えられます。
そこでこの論理式の扱いを少し変えて、例えばよく議論されるのは、追加的なルールとして具体的な述語記号として、=を含む論理式を考える場合がありますが、今回はそれと同様に、いくつかの、実際には無限個ですが、具体的な述語と関数を加えた論理式を構成します。
つまり、今回は通常の論理式に加えて、以下の三種の具体的な記号を使う論理式を考えます。
1. 定まった、述語を作るための述語記号 述(a1,a2)
2. 定まった、関数を作るための関数記号 関(a1,a2)
3. n項のリストを作るための関数記号 (a1)、(a1,a2)、(a1,a2,a3)、……、(a1,a2,a3,……,an)、……
まず、 1. の述語の第一引数には、前項で書いたリストの集合である述語が、対象記号や自由変数、あるいは束縛変数、あるいは項として当てはまります。第二変数には、 3. の関数のどれかが入り、項をつかうことでリストが作れて、任意の項数の述語を表現できます。
2. の関数は、今度は同様に、任意の関数を作ります。第一引数に前前項で示したリストの集合としての関数を入れて、第二引数に 3. のリストを作る関数を介して、任意の項から構成された n項のリストを独立変数にして、 n項の関数を作ります。
つまり、具体的に例を書くと、
P1(a1,a2,c2) と 述(c1,(a1,a2,c2)) は、 P1=c1 として、ほぼ同じ論理式を示しています。
f1(a1,c2) と 関(c1,(a1,c2)) は、 f1=c1 として、ほぼ同じ項を示しています。
「ほぼ」と書いたのは、論理式の構成によっては、この 2種の表現で少し違った解釈、考え方をしなければならないからです。
例えばこの二つの論理式を見てください。
∀x1(P1(x1)holdsP2(x1))
∀x1(述(c1,(x1))holds述(c2,(x1))
そもそも holds というのは、⇒に似た意味を持つのですが、 3値論理特有の論理記号として、さらに厳密な意味を与えています。基本的には前出の真理表を見ればある程度意味の想定がつくと思いますが、あるいはオイラー図を書いてみると割と理解しやすくなるのですが、全称量化によって、数学的、論理的な議論が非常にやりやすくなります。ふつうの⇒では、前提が真でも、結論が「不適切」 -1 の場合がありうるのですが、 holds で構成された全称量化命題は、前提が真なら結論が真であることが保証されます。
この holds という単語は、証明システム・言語の Mizar で使っていた論理記号を援用したものですが、私自身の Mizar の学習はあまり進んでいないので、この論理記号を Mizar の方で厳密に、正確にどんな意味で使っているかは、未確認で不明です。
そこで例示した二つの論理式の話に戻りますが、この二つの論理式は自由変数を持たない閉じた論理式なので、P1あるいはc1、と、P2あるいはc2、の二つの記号に解釈を与えてやると、真偽の判断ができます。しかし対象記号には のあらゆる要素が代入可能ですが、述語記号はその部分集合である の要素(この例の場合)のみを受け入れます。ですからふつうは述語記号にその項の述語以外を代入して解釈することは考えないのですが、無理やり代入してみると、P1とP2、どちらかだけに述語以外を代入し、片方には正しい述語集合を当てはめて解釈したとしても、その真偽値は不適切、-1 になるように思います。ところがですね…後者の論理式の c1 に述語集合以外の対象を代入して、 c2 に任意の述語を代入すると、後者の命題は真になるんです。
つまり、後者の論理式の束縛変数に c2 の全体クラスに含まれる対象を当てはめてみると、-1 holds 1 と -1 holds 0 のみになりますから、全ての x1 で真になっちゃうんですよね。
つまり今回提示した特別な論理式と、一般の論理式では、微妙に解釈が異なることがあります。
私自身はこの特別な論理式を、時々ついつい、 2階述語論理式と呼んでしまうことがあるのですが、実際には私自身は論理学や数学の専門家ではありませんし、一階述語論理、二階述語論理、高階述語論理、の正当な学問の文脈での内容もほとんど知らず、今回は関数と述語を量化しているから、 2階述語論理と呼んでいいのかな、と、なんとなく思っているだけです。
ですからできるだけ今後はこの言葉を使わないようにしようと思っていますが、ついつい口にしたり書いたりしてしまうことはあるかもしれません。
では、この論理形式を実際の数学の問題に適用、応用したい
編集実は今回この文章をまとめたのは、ある数学の具体的な問題を考えているときに、実数の公理をまとめて明確にする必要を感じて、その過程でさらに、そのための基礎の論理形式をより明瞭にする必要を感じたからなんです。
ですからその方針にのっとって、このページのサブページでその議論を進めていきます。
展開としては、今提示した論理形式で、群の定義→環の定義→体の定義→実数の公理、と、記述を進めていきます。
体の定義までの参考資料としては、専門書ではないのですが、手元の Maxima に関する書籍に割とわかりやすい解説が書いてあるので、それと、もう一つ b:ja:数学 の記述も参考にして書いていこうと思っています。
実数の公理に関しては、大学生時代に使った微分積分学の教科書に詳述されているので、それをもとに、今回の論理形式で再構成します。 Wikibooks では、b:ja:解析学基礎/実数というコンテンツが進行中で、これは興味深く読んで注目していますし、ここの議論をもとに同値な様々な実数の公理系を展開できそうですが、今回のこのコンテンツでは、前述の教科書に基づいて一つの公理系を、割と細部に至る事実を形式的に明瞭に表現する事を目的に記述していきます。