ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

「友愛数」とその他数論いろいろコミュのプログラミング言語と集合論

  • mixiチェック
  • このエントリーをはてなブックマークに追加
  関数集合論 :

 プログラミング言語の構造が、コウ博士の考えた「自由クラス理論」のよい例になっていることに気がつきました  いろいろなことについて気がつくのが、コウ博士の場合、おそすぎ
 プログラミング言語の構造を抽象化することによって、「自由クラス理論」の公理が得られるという解説です                    ※ この名称についてですが、群論における自由群が、任意の群を表現可能ということを表しているのと同じ理由で名付けました  任意の集合論を表現可能です  クラスは、集合を一般化した概念  最も一般化した、矛盾のない集合論です

 [友愛数を計算するプログラムの例]

 プログラミング言語の文の例として、友愛数を計算するものを次に書きます

 prog(k) = { my(m = 90, u = 2, v = 1); until(k<m, my(n = (sigma(m) - u*m)/v) ; if(0<n, if(1/u*(sigma(n) - v*n) == m, print(factor(m), ",", factor(n)))); m++)};

 プログラムのこと知らなくてもぜんぜん大丈夫  文を書く規則=文法を理解するのは容易です  BASIC、FORTRAN、など、手続き型言語の場合は、コンピューターに計算させたいことを、ほぼ自然言語と同じ言葉で、命令=手続きを並べていくのに対して、PARI、C言語、など、関数型言語の場合は、プログラムを関数ととらえているので、‥‥確かに、このプログラムの場合も、「n桁まで計算せよ」の「n」を入力して、得られた友愛数=数値をプリントするのだから、関数‥‥、コンピューターに計算させたい関数の性質を、定義文に詳しく記述していく訳です  その構造は容易です  一般に、こういう風

  f(n)={g(m);h(k);・・・・}

  f(n)は、このプログラム=関数、の名前  「=」の右辺が、関数の定義文です  定義文などとスーガクっぽい言い方をしていますが、よーするに、計算させたい関数の「作り方」が書いてある訳です  その書き方は、既に 存在する関数を、「;」で区切ってならべる、ということ
 「=」は、普通の数式の等号ではありません  定義の中に現れる等号は、「==」と書かれます
 この記述においては、f(n)という関数は{g(m);・・・・}という文で作られる 、ということを表現しています

 右辺の、{ }の 中に関数を「;」で区切って書く、という方法は、集合の書き方、{ }のなかに要素を「,」で区切って書く、 というのにとても似ています  なので、この記述が集合論についてのものと仮定して読んでみます

  fという集合は、{g;h;・・・・}という文によって作られる  具体例で書くと
  野菜 = {なす;トマト;ほうれんそう;キャベツ;・・・・}
  右辺の文は、野菜という集合の作り方が書いてある  なんとなくうまくいっている  ただし、微妙に異なる点があります

 プログラミング言語においては、異なる文が同じ関数を作る場合があります  同じ計算をさせるにしても、文の中に並べる関数の組み合わせはいろいろありうるわけですから、当然のことです  これに対して、集合を作る文の要素はただ一通りです‥‥集合が「同じ」とは、要素が同じということ‥‥  集合論の場合は、 f={g;h;・・・・} は集合fは文{g;h;・・・・}によって作られるとも読めますが、「=」は実際に等号であって、fは{g;h;・・・}に等しいとも読もことが可能です  また、集合論では、文の中に文を書くことも可能です  例えば、k={l;m;f;・・・・}なら、k={l;m;{g;h;・・・・};・・・・}と書いてもかまいません
  例 : 自然数を、0={ }、n+1=n∪{n}と定義すると、1=0∪{0}={ }∪{{ }}={{ }}、2=1∪{1}={{ }}∪{{{ }}}={{ },{{ }}}、などなど、括弧のなかに括弧=文の中に文は、普通の記述
 しかし、プログラミング言語いおいては、文の中に書いてよいのは、必ず関数名fでなければなりません  もし、定義の文{g;h;・・・・}をそのまま書くと文法違反になります

 このような違いについては、もう一度後で考察することにして、とりま、プログラミング言語の構造を公理化してみます


 「関数言語の公理」 :

 この理論の公理は次の二つです。
 A. ma ∀A∀B∀x∀y  A ma x ∧ B ma y ∧ A=B ⇒ x=y
 
 A. el ∀A∀B (∀a a ∈ A ⇔ a ∈ B) ⇒ A=B
 
 A, B, C, ...は「文  」のための変数です。ギリシャ文字を使うこともあります。
 a, b, c, .... は「関数 」のための変数です。

 A.ma は、文は、ただ一つの関数を作る、という公理です
 A.el は、文は、その要素によって決定される、という公理です

 この公理は、もっと一般の言語の公理と言ってもよいものです  なので、「関数」という言葉ではなく、「概念」ということばを用いることにします  「概念」以上に普遍性のある言葉はないのですから、‥‥人間の考えるすべてのことは「概念」‥‥、もっとも一般化された言語理論の公理に使う言葉として、ふさわしい  すなわち、
 A.ma は、文は、ただ一つの概念を作る、という公理になります

 人間の造ったすべての理論は、言語で記述されているのですから、この公理  は全ての理論に応用可能なはずです  もう一度、この公理を集合論の公理として読んでみます
 文の一例として「集まり」をとり、概念の一例として「クラス」をとる、という風に応用します

  f={g,h,・・・・} という定義式は、次のことを表現しています

 右辺の文には、fというクラスの「作り方」が書いてあって、それは、g,h,などというクラスを集めた「集まり」がfというクラスを作っている、ということ

 さて、A.ma は、「集まり」は 唯一つのクラスを作る、という公理ですが、異なる集まりが同じクラスを作ることはありうるのでしょうか  例で言うと、次のような場合
 例  : Xというひとにとっては、野菜というクラスを作る集まりは、{なす、きゃべつ、ほうれんそう、いちご、とまと、・・・・}と、いちごを含むが、Yというひとは、野菜を作る集まりに、{なす、きゃべつ、ほうれんそう、やまいも、とまと、・・・・・}と、いちごを含ませない、ということがありそうです

 一方、A.el は、「集まり」は要素によって決定する、という公理ですが、集まりの要素にないうるのはクラスだけで、ふつうの集合論のように、集まり{g,h,・・・・}などがそのまま集まりの要素になることはありません

 「関数言語」の公理を、あらためて集合論の公理として記述すると、次のようになります

 FCの公理は次の三つです。
 A. ma ∀A∀B∀x∀y  A ma x ∧ B ma y ∧ A=B ⇒ x=y
 
 A. el ∀A∀B (∀a a ∈ A ⇔ a ∈ B) ⇒ A=B
 
 A.F ∃x∃B (∀a a ∈ B ⇔ F(a)) ∧ B ma x
 
 FCはFree Classの頭文字です。
 自由群が全ての群を表現できるように、「自由クラス」上に全ての集合論が表現可能なことをあらわす名前です。
 
 A, B, C, ...は「集まり」のための変数です。ギリシャ文字を使うこともあります。
 a, b, c, .... は「クラス」のための変数です。

 三つめの公理、A.F は、Fという性質のクラスを集めると、ある集まりBになり、Bはあるクラスxを作る、という公理です  例 : F(a)=aは野菜

 ここで、普通の集合論の x∈y という式が、関数集合論=FCの、どのような式に対応しているかを考えます  いちご∈野菜 の場合は、いちごを含むある集まり{なす,きゃべつ,ほうれんそう,いちご,・・・・}が野菜というクラスを作っているのでした  式で書くと、 ∃B いちご∈B ∧ B ma 野菜 、となります
 一般には、 x∈y  →  ∃B x∈B ∧ B ma y −TR− 、と翻訳されます

  FCを使って、集合論の矛盾を解決します

  ラッセルのクラス : 
 
 ラッセルの矛盾をNSで表現するとこのようになります。
        *NSはnaive set theoryの頭文字。
 
    ∀a a ∈ R ⇔ ¬ a ∈ a
 
 この論理式を自然言語で表現すると「クラスRの要素であることは、自分を要素としないことである」となります。
 クラスRは自分を要素としないクラスを全部集めたクラスである、と言うことも出来ます。
 
 ここで、変数aにRを代入してみます。
    a=R とすると、
      R ∈ R ⇔ ¬ R ∈ R
 これはある命題とその否定が等価ということですから矛盾です。
 
 ラッセルは論理式三つで数学の基礎を崩壊させたわけです。

 クラスr_0 : 
 
 クラスRについてFCで考察してみることにします。
    ∀a a ∈ R_0 ⇔ ¬(∃B a∈ B∧ B ma a )   −0−
 右辺の括弧の中の式は、TRよりZFではa∈ aを表しますから、右辺はその否定で¬ a ∈ a です。
 確かに集まりR_0は、自分を要素としないクラスを全部集めた集まりで、ZFの論理式に対応しています。   
    *R_0と添え字が付いている文字は、ある集まりを表す定数です。
 この集まりR_0がクラスr_0を作ります。
    *r_0と添え字が付いている文字は、あるクラスを表す定数です。
 式で書くと、
    R_0 ma r_0               −1−
 
 ここでNSと同じように、変数aにr_0を代入してみます。
    a=r_0とすると、0式は  
       r_0 ∈ R_0 ⇔ ¬(∃B r_0∈ B∧ B ma r_0 ) −2−
    もし、
       r_0 ∈ R_0 が真         −3−と仮定すると、1式と合わせて、
       r_0 ∈ R_0 ∧ R_0 ma r_0 が真 
    ゆえに、
      ∃B r_0 ∈ B ∧ B ma r_0 が真     −4−
 
    一方、2式の「⇔」の両辺の真偽値は同じでなければなりません。
    仮定から、   
        r_0 ∈ R_0 が真
    なら、
       ¬(∃B r_0∈ B ∧ B ma r_0 ) も真   −5−
    となり、4式と5式を比べると、論理式とその否定が真ですから矛盾です。
 
    3式を仮定して矛盾になったのですから、3式の否定が得られます。
    ゆえに、
        ¬r_0 ∈ R_0               −6−
    さらに、2式の「⇔」の両辺の真偽値は、同じでなければなりませんから、
    右辺の¬(∃B r_0∈ B∧ B ma r_0 )も否定されて、
         ∃B r_0∈ B∧ B ma r_0       −7−  
    結果として6式と7式が得られることになります。このようにNSでは矛盾を導くクラスRも、FCで考察すると矛盾はなく、二式が得られるだけです。
 
 >まとめ  
 得られた結果を自然言語で表現します。
 
 「自分を要素としないクラス全部を集めたクラスRは、自分を要素とするのか?」という問いに対する答えは、こうなります。
 
 NSでは、「矛盾を起こし、答えられない」。
 FCでは、「自分を要素とする」。   >7式
 ちなみに、ZFでは「自分を要素としない」です。>Rが集合でなくなる
    

コメント(0)

mixiユーザー
ログインしてコメントしよう!

「友愛数」とその他数論いろいろ 更新情報

「友愛数」とその他数論いろいろのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング