回りながら進む

数学/語学/プログラミングなどに興味があります

左逆行列と右逆行列の一致

こんにちは.simulo(simulo (@simulo_) / Twitter)です.

今日はほぼすべての理系大学生が学ぶ,線形代数の基礎の基礎である逆行列に関する記事です.

逆行列の定義は,以下のものです.

Aを体\mathbf{K}上のn\times n行列であるとする.この時,ある\mathbf{K}上のn\times n行列Bについて, \begin{align} AB=BA=E_n \end{align} をみたすなら,BA逆行列であるという.

この定義を素直に受け入れると,AB=E_nだからといってBA逆行列とは限らないでしょう.なぜならば,AB=E_nであるときにBA=E_nである,というのは正しいかどうかわからないし,仮に正しかったとしても(数が並んだ行列の見方をする限りは)自明ではないからです.しかし,AB=E_nならBA逆行列である,という議論を疑問に思うことなくしてきた方が多いのではないでしょうか.AB=E_nあるいはBA=E_nならばBA逆行列であるということは事実であるので,何気なくしてきた議論自体に問題はありません.多くのインターネット上の線形代数の資料や(少なくとも自分が受けた)大学での授業では,自明ではないこの重要な事実は証明されない,あるいは触れられすらしない傾向にあります.この記事では,その証明をします.

基本変形・基本行列

まず,行基本変形や列基本変形について復習しましょう.証明に使います.

まず,行基本変形とは m\times n 行列に対し,

  1. i行目の c 倍をj行目に加えること(i\neq j)
  2. i行目とj行目を入れ替えること(i\neq j)
  3. i行目を  c \neq 0 倍すること

のいずれかを言います.

同様に,基本変形とは m\times n 行列に対し,

  1. i列目の c 倍をj列目に加えること(i\neq j)
  2. i列目とj列目を入れ替えること(i\neq j)
  3. i列目を  c \neq 0 倍すること

のいずれかを言います.

このように定義したとき,行基本変形の1から3の操作はそれぞれ,行列に左から \begin{pmatrix} 1 & & & & & & \\ & \ddots & & & & & \\ & & 0 & \cdots& 1& & \\ & & \vdots& \ddots &\vdots & & \\ & & 1& \cdots& 0 & & \\ & & & & & \ddots&\\ & & & & & & 1 \end{pmatrix} \begin{pmatrix} 1 & & & & & & \\ & \ddots & & & & & \\ & & 1 & & & & \\ & & \vdots& \ddots & & & \\ & & c& \cdots& 1 & & \\ & & & & & \ddots&\\ & & & & & & 1 \end{pmatrix} \begin{pmatrix} 1 & & & & & \\ & 1 & & & & \\ & & \ddots & & & \\ & & & c & & \\ & & & & \ddots & \\ & & & & &1 \end{pmatrix} をかけることと同じです(実際に計算するとわかる).数字が書いていない要素は全て0です.ただし,1つ目の行列は(i,i),(j,j)番目の要素が0(i,j),(j,i)番目の要素が1,2つ目の行列は(j,i)番目の要素がc,3つ目の行列は(i,i)番目の要素がcであるような行列です.これらには逆行列が存在し, \begin{pmatrix} 1 & & & & & & \\ & \ddots & & & & & \\ & & 0 & \cdots& 1& & \\ & & \vdots& \ddots &\vdots & & \\ & & 1& \cdots& 0 & & \\ & & & & & \ddots&\\ & & & & & & 1 \end{pmatrix} \begin{pmatrix} 1 & & & & & & \\ & \ddots & & & & & \\ & & 1 & & & & \\ & & \vdots& \ddots & & & \\ & & -c& \cdots& 1 & & \\ & & & & & \ddots&\\ & & & & & & 1 \end{pmatrix} \begin{pmatrix} 1 & & & & & \\ & 1 & & & & \\ & & \ddots & & & \\ & & & c^{-1} & & \\ & & & & \ddots & \\ & & & & &1 \end{pmatrix} です.実際に左右から掛けてみるとわかります.

基本変形も同様に特定の形の行列を右からかけることに対応していて,それらの行列には逆行列が存在しています.これらの行列を基本行列とよび,基本行列は正則行列(逆行列が存在する行列)であることを示したわけです.

証明

証明に取り掛かる前に,右逆行列,左逆行列という言葉を定義します.

定義
Aを体\mathbf{K}上のn\times n行列であるとする.この時,ある\mathbf{K}上のn\times n行列Bについて, \begin{align} AB=E_n \end{align} をみたすなら,BA逆行列であるという.また, \begin{align} BA=E_n \end{align} をみたすなら,BA逆行列であるという.

すると,示すべき事実は,A,Bn\times nの正方行列としたときに,

BAの右逆行列 \,\, \Leftrightarrow\,\, BAの左逆行列

が成立することであることがわかるでしょう.\Rightarrowさえ示せれば逆は同様に示せるので,\Rightarrowのみ示します.以下,証明の間は常体で日本語を表記します.

nに関する帰納法で示す.n=1のときは明らかに成立している.以下,n>1とすると,A基本変形を繰り返すことによって, \begin{align} C=\begin{pmatrix} 1&{}^to\\ o&A_1 \end{pmatrix} \end{align} という形になる.つまり,基本行列の積で表されるP,Qを用いて,PAQ=Cとなる.ここで,P,Q正則行列である基本行列の積であるので,また正則である.ここで,D=Q^{-1}BP^{-1}とし, \begin{align} D=\begin{pmatrix} u& {}^tz\\ y&B_1 \end{pmatrix} \end{align} と表す.このとき,CD=(PAQ)(Q^{-1}BP^{-1})=PABP^{-1}=PP^{-1}=E_nで, \begin{align} E_n=\begin{pmatrix} 1& {}^to\\ o&E_{n-1} \end{pmatrix} \end{align} \begin{align} E_n=CD=\begin{pmatrix} u& {}^tz\\ A_1y&A_1B_1 \end{pmatrix} \end{align} よって,帰納法の仮定より,A_1は正則で,A_1B_1=B_1A_1=E_{n-1}である,また,z=oと,y=o\ (\because A_1は正則)もわかり, \begin{align} D=\begin{pmatrix} 1& {}^to\\ o&B_1 \end{pmatrix} \end{align} で,CD=DC=E_n がわかる.よって,Cは正則で,A=P^{-1}CQ^{-1}も正則である.

注意

逆行列と右逆行列が一致することを以上のように証明できました.行列の要素が体の元である限りはこの事実は成り立つのですが,行列の要素が非可換環だと一般には左逆行列と右逆行列は一致しないようです.

有理数のmodを駆使して数オリの有名整数問題を解く

こんばんは、simulo_yuiです。

simulo_yui (@simulo_yui) | Twitter

今回は、有理数のmodに関する記事です。合同式の基本的な知識を前提にします。 合同式をご存じでない方は下の記事をご覧ください。

 

問題

数列a_na_n=2^n+3^n+6^n-1で定義する。このとき、a_nの全ての項と互いに素となるような自然数を全て求めよ。(IMO 2005 problem 4)

一般的な解答

p23以外の素数とする。以下、法は明記されない限りpとする。

ここで、2^{p-2} + 3^{p-2} + 6^{p-2}\equiv 1を示す。

(i)p \equiv 1 \mod 6のとき

Fermatの小定理より、2^{p-1}\equiv 3^{p-1}\equiv 6^{p-1}\equiv 1 である。2*2^{p-2}\equiv 1を解き、2^{p-2}\equiv \frac{p+1}{2}である。
同様に、
3^{p-2}\equiv \frac{2p+1}{3}
6^{p-2}\equiv \frac{5p+1}{6}
であり、

2^{p-2} + 3^{p-2} + 6^{p-2}\equiv \frac{p+1}{2} + \frac{2p+1}{3} + \frac{5p+1}{6} \equiv 2p + 1 \equiv 1
が確かに成立する。

(ii)p \equiv 5 \mod 6のとき

(i)と同様に、2^{p-2} + 3^{p-2} + 6^{p-2}\equiv \frac{p+1}{2} + \frac{p+1}{3} + \frac{p+1}{6} \equiv p + 1 \equiv 1

p2,3を除く素数であるので、(i),(ii)の場合で尽くされている。よって、a_{p-2}\equiv02,3を除くすべての素数pで成り立ち、a_1=10\equiv 0 \mod 2, a_2=48 \equiv 0 \mod 3より、全ての素数について、それと互いに素でない項が存在する。つまり、2以上の全ての整数についても同様にそれと互いに素でない項が存在する。
また、1については、全ての整数と互いに素なので、要件を満たす。よって、求める自然数は、1のみである。

解説

まず、多くの素数についてそれと互いに素でないa_nの項が存在するならば、それらを素因数に持つ全ての整数もその項と互いに素ではない上、素数は扱いやすい様々ないい性質を持つので、素数のみについて考えようと思うのは自然でしょう。つまり、素数pと互いに素でない項の存在を具体的な構成をするなりして示せばいいのです。すると、整数のn乗と素数pに関する問題に変わるので、似た形である、Fermatの小定理を使いたくなるのは自然でしょう。でもなぜ、p-1乗でなく、p-2乗を考えるのでしょうか。

ある人は、様々な素数pで試していった結果p-2乗でうまくいくことに気づくのだ、というのかもしれません。実際、試験でこの問題が出てきたのならば、それが一番現実的でしょう。しかし、何か理由を考えたくなるのが、数学が好きな人の定めではないでしょうか。考えていきましょう。

Fermatの小定理について

ご存じの方はこの項を読み飛ばしていただいて結構です。
Fermatの小定理とは以下のようなものです。

Fermatの小定理

p素数apと互いに素な数とすると、
a^{p-1}\equiv 1 \mod p - (1) が成立する。

 

簡単な証明をします。

一般に、n自然数とするとき、a \equiv b \mod p \Rightarrow a^n \equiv b^n \mod pなので、1 \leq a \leq p-1の場合を考える。

1\leq k \leq p-1について、{}_p C_k=\frac{p!}{(p-k)!k!}\equiv 0 \mod p
(\because 分子はpの倍数、分母はpの倍数でない)
なので、a^p=((a-1)+1)^n=\sum_{k=0}^p {}_{p}C_{k} (a-1)^k\equiv (a-1)^p+1 \mod p であり、これを繰り返し用いて、a^p\equiv (a-1)^p+1\equiv (a-2)^p+1+1=\cdots \equiv a \mod pであり、apは互いに素なので、最左辺と最右辺をaで割ると(1)が得られる。証明終。

有理数のmodについて

合同式の概念は整数の世界で導入され、整数の合同式をご存じの方は多いと思います。実は、合同式有理数の世界にも拡張できるのです。具体的には、

nを整数として、有理数rが、r=\frac{a}{b}a,b \in \mathbb{Z}, \gcd (a,b) = 1, \gcd (b,n)=1を満たすa,bを用いて表されるとき、bc\equiv a \mod nをみたすc \in \mathbb{Z}を以て、r \equiv c \mod nと定義されます。

つまり、既約分数の形で表したとき、分母がnと互いに素になる有理数について、合同式が定義されました。このようなcが合同な数を除いて一意に存在することは簡単に示せます。

このように定義された有理数のmodにおいても、整数の世界で成り立つ合同室の性質、つまり、法をna,b,c,dを定義に出てきた条件を満たす有理数として、
a \equiv c \land b \equiv d \Rightarrow a+b \land c +d
a \equiv c \land b \equiv d \Rightarrow a-b \land c -d
a \equiv c \land b \equiv d \Rightarrow ab \land c d
mnと互いに素な整数とするとき、a\equiv b \Rightarrow \frac{a}{m} \equiv \frac{b}{m}
a \equiv b \Rightarrow a^m \equiv b^m
f(x)を整数、または分母がnと互いに素な係数をもつ多項式とするとき、a \equiv b \Rightarrow f(a) \equiv f(b)
などといった性質がなりたちます。これは簡単に証明できます。

また、参考として、分母がnと互いに素でない有理数に拡張してしまうと次のような問題が生じることも書いておきます。 その問題というのは、上の定義で、bnと互いに素でないとき、bc\equiv a \mod nとなるようなcが一般には存在しないことです。a=1,b=2,n=4などとすると、分かると思います。bnが互いに素でないとき、\mod nの世界ではb0の要素(=nの素因数)を含んでいるから、こんな不都合が生じる、という感覚的な説明もできます。

問題への適用

先程の問題に有理数のmodを適用してみましょう。
フェルマーの小定理より、a^{p-1}\equiv 1 \mod pより、a^{p-2}\equiv \frac{1}{a} \mod pが成立します。 すると、a_{p-2}=2^{p-2}+3^{p-2}+6^{p-2}-1\equiv \frac{1}{2}+\frac{1}{3}+\frac{1}{6}-1=0 \mod pとなります。この式を見ると、なぜp-2乗を考えるのか、なんとなくわかった気になりませんか?つまり、a_nの式にn=-1を代入すると、a_{-1}=0になることに気づくので、\mod pの世界でも逆元(=かけて1になるもの。ここでは2に対する\frac{1}{2})である、p-2乗を考えよう、というモチベーションがあったのです。

こうやって書くと、何だか数オリの問題が可愛く見えますね。とても可愛い。綺麗でかわいいなんて最高ですね。

終わりに

誤りなどありましたら教えてください。
こうやって記事を書き終わってみると、この問題の作問者はきっと、小学生でも知っている\frac{1}{2}+\frac{1}{3}+\frac{1}{6}=1という等式をどれだけドラマチックなものに昇華できるかを考えていたんじゃないかな、と思います。最後に、改悪した問題を貼って記事を終わりにします。

冒頭の問題のa_na_n=2^n+4^n+7^n+14^n+28^n-1と定義して、a_nの全ての項と互いに素となるような自然数を全て求めよ。
Hint(なのか?):6も28も嬉しい性質が成り立っているので、この問題はうまくいきます。

サイクロイドと等積変形 ~カヴァリエリの原理の面白い応用~

こんばんは、simulo_yuiです。

simulo_yui (@simulo_yui) | Twitter

 

現在の日本の学習指導要領では数Ⅲで学ぶことになっているサイクロイド。最速降下曲線(スロープのようにしたときに一番早くボールが下りてくる曲線)であることや、その等時性などさまざまな面白い性質を持っています。数Ⅲを学習したことがある方なら、その長さや、サイクロイドとx軸で囲まれる面積をいやというほど計算した記憶があるのではないでしょうか。今回はそんなサイクロイドとx軸で囲まれる面積を数Ⅲを使わずとも中学生でも出すことができる、というお話です。

サイクロイドとは?

サイクロイドとは円が直線上を滑らずに転がるときに、直線と接していた円上の点がまた直線と接するまでに動く軌跡のことを言います。口で説明するよりも下の図を見てもらった方が理解が早いと思います。

f:id:cute_1iYui:20210710154922g:plain

上の図では半径1の円が転がっています。中心O'(t,1)(t \in \mathbb{R}, 0 \leq t \leq 2\pi)にあるとき、点 Pの座標は以下のようにパラメータ表示されます。

P(t-\sin t,1 - \cos t)

サイクロイドとx軸で囲まれる部分の面積

f:id:cute_1iYui:20210710154955p:plain

ここで、サイクロイドとx軸で囲まれる部分の面積、すなわち上の図の赤線部の面積Sを考えると、パラメータ表示を利用して、

S =\int^{2 \pi}_0 y dx = \int^{2 \pi}_0 y \frac{dx}{dt} dt = \int^{2 \pi}_0 (1-\cos t)^2 dt =3\pi

となり、求める面積は3\piであったことが分かる。

カヴァリエリの原理を用いて面積を求める

f:id:cute_1iYui:20210710155004p:plain

上の図の横線部の面積Tを考えます。真ん中の円の面積は\piなので、S=3\piを示すには、T=\piになることを示せばよさそうです。。

真ん中の円の中心をO'、円上の点でO'Mがx軸と平行になるような点をMとし、\angle AOM=\angle BOM = \theta (0 \leq \theta \leq \frac{\pi}{2})となるような円上の点A,Bをとり、サイクロイド上の点P,QAP \parallel BQ \parallel x軸となろようにとり、C(\pi,0),O(0,0)とします。

f:id:cute_1iYui:20210710155020p:plain

このとき、AP+BQ=OC=\pi \qquad \cdots (1)が成立しています!

今からこれを示します。

f:id:cute_1iYui:20210710155024p:plain

上の図のように、動円がPを通るときの中心をO''すると、AP=O'O''

が成立しています。ここで、動円が円O''の位置から円O'の位置に動くまでには、円は\frac{\pi}{2}+\theta回転しているので、O'O''は、円の中心角が\frac{\pi}{2}+\thetaの弧の長さに等しく、O'O''=\frac{\pi}{2}+\thetaで、AP=\frac{\pi}{2}+\thetaである。

同様に、BQ=\frac{\pi}{2}-\thetaとなる。よって、AP+BQ=(\frac{\pi}{2}+\theta)+(\frac{\pi}{2}-\theta)=\pi(1)が確かに成立します。

ここで、面積Tを求めるために次のような操作をします。

f:id:cute_1iYui:20210710155029p:plain

y=1/2の線で図形を切り、上の部分を横に持ってきます。操作後の図が下図です。

f:id:cute_1iYui:20210710155039p:plain

そしてこれをカヴァリエリの原理を用いて等積変形すると(1)より、底辺が\pi高さが1の長方形になります。

f:id:cute_1iYui:20210710155054p:plain

よって、T=\piが分かりました。よって、S=3\piになることも分かりました。

カヴァリエリの原理について

カヴァリエリの原理とはある2つの立体や平面図形を同じ面で切断した時の面積や長さが常に等しいならば、二つの立体や平面図形の体積や面積は等しいというものです。詳しくはWikipediaを参照してください。

ja.wikipedia.org

 

定規のみを用いて与えられた線分に平行な直線を引けるのか?

こんばんは、simulo_yuiです。

simulo_yui (@simulo_yui) | Twitter

A. 引けません

これで記事を終わりにすると、とてつもなくつまらないので、もう少しだけお付き合いください。

世の中には定規とコンパスによる作図という概念があります。これについては以下のurlを参照してください。 定規とコンパスによる作図 - Wikipedia

この定規とコンパスによる作図、中学生の時にやったことがある方もいらっしゃるのではないでしょうか。正三角形の作図だったり、角の二等分線の作図だったり、垂直二等分線の作図だったり。その作図の要領で、与えられた線分に平行な直線を引けるか?という問題です。この場合、定規は二定点を通る直線を引くことか、あるいは無作為に平面上に直線を引くことにしか使えません。

あるいは、コンパスを使用していいルールだったら、与えられた線分に平行な直線を引く方法を知っている方も多いかも知れません。では、定規しか使えない場合はどうなのでしょうか。この場合、以下の定理が成り立ちます。

定理

定規のみを用いて与えられた線分に平行な直線を引くことはできない。

この定理の証明に移る前に、次の補題の証明をしておきましょう。

補題

平面上に円がすでに与えられているとする。この際、定規のみを用いて円の中心を得ることはできない。

補題の証明

xy平面で考える。 平面上に与えられている円をCとする。以下の条件を満たす、PからPへの射影Tを考える。

(1)直線を直線に移す

(2)円Cを円C'に移す。

(3)円Cの中心Oを、円C'の中心O'に移さない。

このようなTが確かに存在すると仮定する。さらに、平面上に円がすでに与えられているとき、定規のみを用いて円の中心を得ることができると仮定する。このとき、円Cの中心Oを作図するような直線の列が存在する。このとき、直線の列の移る先の直線の列も円C'の中心O'を作図する。(Tは2曲線が交わる/接する/共有点を持たないといった性質を保存し、定規は二定点を通る直線を引くことか、あるいは無作為に平面上に直線を引くことにしか使えないため。)しかし、これは(3)に矛盾する。

さて、仮定したようなTは確かに存在する。 例として、(x,\,y)(\frac{\sqrt{2}x+1}{x+\sqrt{2}}, \, \frac{y}{x+\sqrt{2}})に移すような射影はTの条件を満たす。_\Box

よって補題が証明された。定理の証明に移る。 定規のみを用いて与えられた線分に平行な直線を引けると仮定する。ここで、平面上に円Dがあるとする。円Dと2点で交わるような、互いに平行で異なる3直線L,\, L', \, L''を考える。また、Lと平行ではなく、Dと2点で交わるような、互いに平行で異なる3直線M,\, M', \, M''を考える。ここで、L, \, L'と円Dの4交点のなす四角形の対角線の交点をXL, \, L''と円Dの4交点のなす四角形の対角線の交点をYとすると、XYは円Dの中心を通る。同様に、M, \, M'と円Dの4交点のなす四角形の対角線の交点をX'M, \, M''と円Dの4交点のなす四角形の対角線の交点をY'とすると、X'Y'は円Dの中心を通る。このとき、XYX'Y'の交点は円Dの中心を通る。これは、補題に矛盾する。_\Box

以下の図では、線や点の名前などは違いますが、状況を模しています。

f:id:cute_1iYui:20210325235205p:plain

Javaにおけるクラスのアップキャストについて分かったこと

こんばんは、simulo_yuiです。

simulo_yui (@simulo_yui) | Twitter

 

主にタイトルの通りのことについて語ります。

 

以下の記事を読んでいて不思議に思う部分があったことがきっかけです。

www.sejuku.net

その部分とはこちらです。

 サブクラスのオブジェクトをスーパークラス型のオブジェクトでアップキャストする際、注意点があります。スーパークラスとサブクラスに、同じ名前のフィールド変数やメソッドがある場合には、フィールド変数はスーパークラス、メソッドはサブクラスが優先される、という点です。

この文章中に出てくる単語で分からないものがあったとしたら、上記の記事を読むことを推奨します。

 

なぜフィールドとメソッドに対して違う扱いがされるのでしょうか?上記の引用文の事柄について初めて知った方の多くがその疑問を持つと思います。本記事はそれについて調べました。

 

本編

Javaにおいて(おそらくは多くのオブジェクト指向言語において)クラスの継承はどのように内部で実現されてるのでしょうか。以下に図を用意しました。

 

f:id:cute_1iYui:20200417230649p:plain

継承とキャスト

継承される側のクラスをスーパークラス、する側のクラスをサブクラスと呼びます。

サブクラスはその最初の部分にスーパークラスのコピーを持っています。継承時にスーパークラスからサブクラスへとコピーされます。オーバーライドではないサブクラス独自のメソッドやサブクラス内で宣言される変数たちはそのコピーのあとに追加されます。この追加された部分を以降、便宜上非共有部分と呼びます。サブクラスからスーパークラスへとアップキャストをするときは、このコピーの部分が抜き取られます。スーパークラスへキャストされたサブクラスからは非共有部分に入っている情報を得ることはできません。

 ※抜き取られる、は適切な表現ではありません。その部分以外へのアクセスが制限される、という表現が適切だと考えられますが、直感的なので用いています。

サブクラスからスーパークラスへのキャストは行うことができますが、一般的にはスーパークラスからサブクラスへのキャスト(ダウンキャスト)は行うことができません。サブクラスはスーパークラスが持っているすべてのフィールド変数とメソッドを持っていることを保証できますが、スーパークラスがサブクラスの持っているすべての変数とメソッドを持っていることが保証できないためです。

 

クラスはフィールドとメソッドから構成されています。一般にフィールド変数はプリミティブ型なら変数の値、参照型なら変数のアドレスへの参照を持っています。対して、クラスはメソッドそのものを格納しません。メモリ内のどこかほかの場所に格納されているメソッド本体への参照を持っています。上の図における参照の矢印を見て下さい。

 

サブクラスにおいて、スーパークラスの持っているメソッドのオーバーライドを行った場合、コピーされた部分にあるスーパークラスのそのメソッドへの参照がオーバーライドされたメソッドへの参照に切り替わります。メソッドの名前が同じでも中身(参照先)が違うのです。こちらも上の図における関数ポインタb、メソッドb、メソッドb'を見ていただきたいです。

 

また、これは推奨されるコードではないですが、サブクラス内においてスーパークラスと同名の新しい変数を宣言した場合、その変数は非共有部分に置かれます。この際、サブクラス内に同名の変数が二つあるような状況に思えますが、そこは闇の処理が行われてサブクラスとして扱う際には非共有部分に入っている変数を使われるようになります。

 

ここで私が最初に疑問に思ったことに戻ります。サブクラスからスーパークラスへのキャストが行われる際、同名のフィールド変数やメソッドがある場合はフィールド変数はスーパークラスのものが優先され、メソッドはサブクラスのものが優先されるのはなぜでしょうか?

 

アップキャストが行われる際、サブクラス内にあるスーパークラスのコピーの部分が抜き取られるという話をしました。スーパークラスとサブクラスに同名の変数があっても、その変数は非共有部分に入っているため切り取られず、コピー部分に入っていたスーパークラスのコピーの変数(=スーパークラスのものと同じ変数)が抜き取られるのです。対してスーパークラスとサブクラスに同名のメソッド(つまりオーバーライドされたメソッド)が存在する場合でも、サブクラス内のオーバーライド後のメソッドへの参照はコピー部分に入っているため、サブクラスのメソッドがそのまま抜き取られます。

 

抜き取られたオーバーライド後のメソッドの中でサブクラス内で新しく宣言された非共有部分にあるスーパークラスに同名の変数がある変数が使用されている場合は、アップキャストされた後でもそのメソッド内では非共有部分にある変数を用います。これはその変数への参照先にあるメソッドの内部では非共有部分にある変数への参照が入っているためです。(サブクラスとして扱われているうちは非共有部分にある変数が使われるため。)

 

感想その他

ややこしいですね。

数の構成❶ ペアノの公理を満たす集合の存在

こんばんは、simuloです。

simulo (@simulo_) / Twitter

自分はここしばらく独学でペアノの公理について勉強しています。参考にしている文献(PDF)はこちらです。

https://mathematics-pdf.com/pdf/construction_of_numbers.pdf

もともと数学に対する素養もなく、独学なので間違いも多いかと思われますが、間違いを見つけられましたらコメントにて教えていただけると幸いです。 集合論もあいまいにしか勉強してないので、集合論における間違いが一番心配です。

また、今回の記事は上の文献に記述がなかった部分なので、自分で証明をしています。なおのこと心配ですね。

今回はZFC公理系からペアノの公理を満たす集合の存在を示します。必要となる公理は以下の二つです:

1.無限公理: \exists A(\emptyset \in A \land \forall x \in A ( x \cup \{ x \} \in A ) )

空集合を要素にもち、xを要素にもつならx∪{x}を要素に持つ集合Aが存在する。

無限公理 - Wikipedia

2.正則性公理:  \forall A (A \neq \emptyset \Rightarrow \exists x \in A \forall t  \in A(t \notin x))

空でない集合は必ず自分自身と交わらない要素を持つ。

正則性公理 - Wikipedia

また、これからの話題の中心となるであろうペアノの公理についてまとめます。

集合Nペアノの公理を満たすとは、集合Nが以下の条件を満たすことを指す。

  1.  0 \in N
  2. 写像 \sigma: N \mapsto Nが存在する。
  3. 写像 \sigma単射である。 \sigma (x_1)=\sigma(x_2) \Rightarrow x_1=x_2
  4. 写像\sigma(x) x\in Nがなす全体の集合を\sigma(N)として、0\notin\sigma(N)
  5. 集合SS\subset Nとして、(0 \in S \land x \in S \Rightarrow \sigma(x) \in S) \Rightarrow S=N

僕らが慣れ親しんでいる自然数という集合はこのペアノの公理を満たすとされています。というより、このような公理を満たす集合として自然数の存在を示していくわけです。自分も読んでいて驚いたのですが、これだけの公理(定義?)から足し算と同じ性質を持つ写像、掛け算と同じ性質を持つ写像があっという間に構成されていくのです。さて、ペアノの公理を満たす集合の存在の証明をしていきます。

証明

命題

ペアノの公理を満たすような集合Nが存在する。

まず次の補題が正則性公理から導かれることを示す。

補題1:  \lnot (\forall x_1 (x_1 \ni x_2 \ni x_3 ...))

任意のx_1に対してx_1 \ni x_2 \ni x_3......と続く無限降下列が存在しない。

証明: 無限降下列が存在したとし、ある一つの無限降下列x_1 \ni x_2 \ni x_3......を用意し、それらすべてを含む集合Xを考える。 このとき任意の要素x_nに対し、A \cup x_n = x_{n+1}となり、正則性公理:  \forall A (A \neq \emptyset \Rightarrow \exists x \in A \forall t  \in A(t \notin x))に矛盾。 よって無限降下列は存在しない。Q.E.D.

補題2: 無限公理における集合Aペアノの公理の条件1.~4.を満たす。また0=\emptysetとする。

  1. 無限公理における集合Aの条件より、 0=\emptyset \in A
  2. x \in Aに対してx \cup \{ x \}を対応させる写像\sigmaとすれば、無限公理の集合の構成の仕方より写像\sigma: X \mapsto Xが存在する.。
  3. x_1 \neq x_2 \land \sigma(x_1) = \sigma(x_2)、すなわちx_1 \neq x_2 \land x_1 \cup \{ x_1 \} = x_2 \cup \{ x_2 \}となるx_1,x_2 \in Aの存在を仮定する。すると、x_1 \neq x_2より、 \{ x_1 \} \neq \{ x_2 \}なので、 \{ x_1 \} \subset x_2である必要がある。同様に、\{ x_2 \} \subset x_1である。つまり、 \{ x_1 \} \subset x_2 \in \{ x_2 \} \subset x_1 \in \{ x_1 \} x_1 \in x_2 \in x_1となり、補題1に反する。
  4.  0=\emptyset \in \sigma(N)とすると、ある要素 ρ \in Aによって\emptyset=ρ \cup \{ ρ \}と表せることになり、矛盾。

Q.E.D.

を要素に持つとき、x\cup \{ x \}を要素に持つような集合を帰納的集合とよぶ。無限公理は、空集合を要素に持つ帰納的集合の存在を示している。つまり、0を要素に持つ帰納的集合は存在し、補題2でそのような集合はペアノの公理の条件1. ~4.を満たすことを確認した。

0=\emptysetを要素に持つ帰納的集合をAとし、そのようなA全体の集合を\mathfrak{A}とする。また、\bigcap_{\forall A \in \mathfrak{A}}{A}=Bとする。補題2は \forall A \in \mathfrak{A}に対し成り立つのであった。このとき、Bペアノの公理を満たす集合であることを示す。

  1.  \forall A \in \mathfrak{A}について、 \emptyset \in Aなので、 \emptyset \in B
  2.  \forall A \in \mathfrak{A}について、 x \in A \Rightarrow x \cup \{ x \} \in Aなので、 \tau : B \mapsto B \tau(x) =  x \cup \{ x \}と取ることが出来る。
  3. ここで、1.と2.より、集合Bは無限公理における集合Aの一つであることが分かる。補題2より、また、上で取った写像\tauの取り方が補題2の2.の写像\sigmaと一致しているので、写像\tau単射である。
  4. 3.と同様に、 B \in \mathfrak{A}であることが確かめられるので、 0 \notin \tau(B)
  5. 集合Sはその取り方からS \in \mathfrak{A}である。ここで、集合Bはその取り方より、 \forall A \in \mathfrak{A}(B \subset A) となるので、B \subset S。これと、S \subset Bより、 S=N

よって、集合Bペアノの公理をみたす。 Q.E.D.

つまりこれでペアノの公理を満たす集合が存在する、ということが示されたわけです。あとは少しこのペアノの公理を満たす集合に関する性質を証明すれば安心して自然数を扱えますね。これからも数の構成に関する記事を何個か書いていこうと思います。

ご拝読いただきありがとうございました。