こちらの記事の計算に誤りがあることが発覚しました。今は手が離せないので,また後ほど訂正いたします・・・。
上記の誤りについてですが,たしかに誤りであることが確認できました。どの箇所が誤っているかについて,末尾の「追記」に詳しくまとめました。
実は、今回の方法でも「57は3で割り切れる」を証明できることに気づきました。気付いたのは2021/03/17だったのですが、ブログに反映させるのが億劫でやっておりませんでした。今回、その証明をまとめたツイートをブログ末尾の「追記3」にまとめました。
57 という数は「グロタンディーク素数」と呼ばれています。グロタンディークという高名な数学者が「57 を素数と間違えた」というエピソードに由来しています。
このエピソードは,私のブログでも紹介したことがありました。
tsujimotter.hatenablog.com
上の記事でもご紹介した通り, という数は,実際は で割り切れるのです。だから,素数ではありません。
一方で,この数が で割り切れることを示すのは難しいのでしょう。あのグロタンディーク先生が間違えたのですから。
実際,「 が で割り切れる」を示すためには, を で割り算しなければいけません。割り算です。きっと難しいに決まっています。
そこで今回の記事では,実直に割り算するのではなく,もっと別の方法で「 は で割り切れる」を示すことを試みたいと思います。
今日紹介するのは「 は で割り切れる」の別証明 です。
使う道具は,虚二次体の類数 です。
少し長い記事なので,目次を用意しました。以下の流れで進めます。
1. 補題:類数が 3 で割れる条件
それでは,証明に必要な道具を紹介しましょう。
まず虚二次体とは,有理数体 に という形の数を添加した拡大体 のことです。
虚二次体には「類数」と呼ばれる非常に重要な「不変量」が存在します。
そもそも虚二次体においては,通常の数の世界で成り立つような素因数分解の一意性が,一般には成り立ちません。この「成り立たなさ具合」を表現する群を「イデアル類群」というのですが,このイデアル類群の位数を類数というのです。
本記事では類数について詳しく述べませんが,以下の記事でいくらか丁寧に紹介していますので,よろしければご覧になってください。
さて,虚二次体の理論によると,類数に関する以下の補題が成り立つことが知られています。これを使うと類数が で割り切れることがわかるのです。
の類数が で割り切れないならば,整数 に対して,
の整数解は以下のいずれかに限られる:
- のとき,
- のとき,
上の補題は,要するにこういうことを言っています。
が(上で)定められた整数解しか持たない
この対偶を取ると
の類数が で割り切れる
となります。
したがって,①類数が 57 かつ ②条件を満たすような虚二次体 を見つければ,補題の対偶により「 は で割り切れる」を示せますね。
上の補題の証明はそんなに簡単ではありませんが,概略だけご紹介します。
とおくと, となり, が単項イデアルだと分かる。
一方,類数を とおくと, も単項イデアル。
と が互いに素であるから,ユークリッドの互除法により
を満たす が存在する。
より, が単項イデアルとわかる。
(この辺の証明の流れは以下の記事の内容とそっくりですね!)
tsujimotter.hatenablog.com
とおいて,
を計算すると,整数解が具体的に計算できる。
(実際には, を で場合わけして分類して計算する)
詳細は,以下の本の第7章に載っていますので,興味がある方は調べてみてください。
それでは,本題の証明に移りましょう。
2. 類数を使った「57 は 3 で割り切れる」の証明
の類数を とする. である.
補題より,もし が で割り切れないならば,
の整数解は に限られる.
一方 には,上記と異なる整数解 が存在する.補題の対偶により, は で割り切れる.
より, は で割り切れる.
3. 裏話
以上で証明が終わったのですが,いかがだったでしょうか。
上では,さらっと結果だけ書いていますが,実はこの例を見つけるのは,想像以上に大変 でした。
ちょっとだけ裏話を紹介します。
まず,類数が であるような虚二次体を探すのが大変です。
世の中には素敵なブログがあって,
integers.hatenablog.com
こんな風に「ある類数を持つ虚二次体のリスト」を作ってくれています。
しかしながら,類数が であるような虚二次体については載っていません。ほかのサイトを調べてみましたが(たとえば OEIS や MathWorld など),どこにも見つかりませんでした。
仕方ないので自分で計算することにします。
類数の計算は以前にもやったことがありました。
tsujimotter.hatenablog.com
上の記事では,虚二次体の類数ではなく判別式 を持つ二次形式の類数 を計算しています。
どう対応しているかというと,判別式 を持つ虚二次体の類数を としたとき
となります。
虚二次体 の判別式は,
です。 から を求めるには,
- が で割り切れるなら で割って,
- 絶対値をとる
とすれば良いわけですね。
さて,このようにして判別式の絶対値が 100000 以下の虚二次体の類数 を計算しました。すると,以下の 110 個の虚二次体が見つかります(以下はすべて の値)。
このうち,条件 を満たすものはどれでしょう。
少し減りましたね。
さらに条件 または を満たすような はどうでしょうか。ここで, は正の整数, は のいずれかです。このような は,・・・なんとたった2つです!!
あのたくさんあった候補は,どこにいってしまったのでしょう・・・。
実は,条件はあと一個あるのですが。本当に成り立つ候補は存在するのでしょうか。
最後の条件に行く前に, を具体的に計算して,補題で定められた整数解を計算しましょう。
より, です。したがって,補題で定められた整数解は,
となります。
のとき:
より, です。したがって,補題で定められた整数解は,
となります。
さて, が,上で計算した整数解と 異なる整数解 をもっていれば,今回の証明に用いることができます。
最後の条件は「上と異なる整数解をもっていること」です。
ここで障壁が1つあります。実際,整数解を計算するには,どのようにしたらよいでしょうか。
全探索で計算するのでしょうか。先ほどの定められた方の整数解は については十万台の大きさになっています。このような解を見つけるのは,なかなか大変です。
良い方法を知らない tsujimotter は,仕方なく Sage というソフトウェアに頼ることにしました。Sage は以下の記事でも用いていますので,今回は解説するのをやめておきます。
tsujimotter.hatenablog.com
さて,
のような式は,楕円曲線と呼ばれています。すなわち,楕円曲線の整数解を求める問題です*1。
そのような考えのもと "Sage", "elliptic curve", "integer points" のような単語で調べていくと,計算方法が見つかりました。
については,以下のコマンドで求めることができます。
sage: a = 3467 sage: E = EllipticCurve([0, 0,0, 0, -a]); E Elliptic Curve defined by y^2 = x^3 - 3467 over Rational Field sage: E1 = E.minimal_model() sage: E.integral_points() [(4623 : 314330 : 1)]
最終的に という整数解が得られました。
・・・あれ?これ「定められた方の整数解」じゃん。
というわけで,残念ながら「はずれ」ですね・・・。
本当に条件に合う虚二次体は見つかるのか。不安が脳裏をよぎります。
最後のチャンスです。
で試してみましょう。
sage: a = 8419 sage: E = EllipticCurve([0, 0,0, 0, -a]); E Elliptic Curve defined by y^2 = x^3 - 8419 over Rational Field sage: E1 = E.minimal_model() sage: E.integral_points() [(2807 : 148718 : 1)]
おっと!「定められた整数解」と異なる整数解
が現れました!!!
これはついにやったか!!!
いや,間違っているかもしれません。
落ち着いて本当に楕円曲線 の解になっているか確かめましょう。
解の確認は,Ruby で行いました。
$ irb irb(main):001:0> x = 2807 => 2807 irb(main):002:0> y = 148718 => 148718 irb(main):003:0> a = 8419 => 8419 irb(main):004:0> x*x*x-a => 22117043524 irb(main):005:0> y*y => 22117043524
たしかに,
となって,一致していますね!
というわけで,見事目的の解を見つけました!!!
結局,まとめると
- を満たし
- または を満たし
- なおかつ,定められた整数解 以外の整数解を満たすような
を使って,類数 の虚二次体 を用いると,補題より が で割り切れることを証明できるのです。
いやぁ・・・疲れた。
4. 応用:平方数の1つ後ろで立法数の1つ前にある数はなーんだ?
せっかく,面白い補題を紹介したので,この補題を使った応用をご紹介します。
という数についてです。
この数は, という「平方数」の1つ後にある数であり,かつ, という「立法数」の1つ前にある数でもあります。
実は,このような数は のみであることが知られています。つまり,
ということです。
これを図形で表すと以下のようになります。平方数は正方形で表現できるので, の正方形に つ足してあげて
とします。これを並び替えると
のように, の立方体となるということですね。
こんなことができる組み合わせは
のみであるということです。
数式で表すと,
を満たす整数解 は だけであるということ。これは,まさに先ほどの楕円曲線の整数解ですね。
この問題の解法については,たとえば以下の「コロちゃんぬさん」のブログ記事でも紹介されています。
corollary2525.hatenablog.com
より一般的な定理である(今回紹介した)補題を使っても,この問題を解くことができます。やってみましょう。
補題に当てはめると, なので を満たします。また, の類数は,よく知られているように です。したがって, で割り切れません。さらに, より, として条件を満たします。
したがって,この曲線は
という形の解だけを整数解に持ちます。 を代入すると
となり,たしかに整数解は だけであることがわかりました。
5. まとめ
いかがだったでしょうか。類数をつかうというのは,なかなか面白い解法だったのではないでしょうか。
実際のところ「 を 割るのが大変だから・・・」というのは冗談です。今回は簡単な割り算だったので,こんな風に大掛かりな道具を使う人はいないとは思いますが,一方で整数論においては結構似たようなことをやるみたいです。
tsujimotter はこんな風に,抽象的な道具を使って具体的な問題を解くような手法が好きで,とても面白いと感じています。
というわけで,虚二次体の類数や代数的整数論に興味をもってもらえると嬉しいです。
それでは,今日はこの辺で。
参考文献
先に紹介した通り「虚二次体の類数が で割り切れる条件」はこの本で知りました。ほかにも,とても魅力的なトピックが載っている本なので,よかったらごらんください。
追記 (2017/02/05):
・・・ときれいに終わりたかったのですが,まだ終わりません。冒頭で述べたように,今回の記事には重大な誤りがありました。端的に言うと,類数の計算に誤りがあったのです。
さらにいうと,今回の補題を用いて「57 は 3 で割り切れる」を証明できないことも判明しました。非常に残念です。
この説明ではよくわからないと思いますので,順を追って説明していきましょう。
類数の計算の誤り
まず,類数の計算の誤りについてから。
類数の誤りは,たとえば Sage に以下のコマンドを打ち込むと発見できます。
sage: K.<b> = NumberField(x^2 + 8419); K Number Field in b with defining polynomial x^2 + 8419 sage: h = K.class_number(); h 19
の類数は ,すなわち, ではなかったのです。
この事実を元に,今回の証明部分の論理を再構成すると,以下のようになります。
したがって補題より, に対して,楕円曲線の整数解は のみである.
少しおかしいと思いませんか?
本文中の計算では,定められた整数解は
でした。一方で,Sage で得られた実際の整数解は
でした。これが一致しないのであれば補題と矛盾してしまいます。
実は,定められた整数解の方にも誤りがあったのです。これは単純に私の計算ミスでした。 をそのまま代入すると,
となり,Sage で得られた実際の整数解と一致します。結局,計算ミスを正せば,補題に矛盾はないことがわかります。
二重に誤りがあったので,おかしなロジックを構築してしまったのですね。
というわけで,計算ミスは修正できました。しかしながら,このままでは「57 は 3 で割り切れる」を証明できません。
類数 57 を持つ虚二次体
上記では, を用いて「57 は 3 で割り切れる」が示せないことを述べました。
一方で,類数が 57 であるような虚二次体は,他にもいくつかあるはずです。この中から条件に合うものを探して「57 は 3 で割り切れる」を示せないでしょうか。チャレンジしてみましょう。
本文中では,類数の計算に私の自作プログラムを用いていました。しかし,このプログラムの結果と実際の類数が一致しないこともわかりました。
つまり,私のプログラムにはバグがあったのです。どうも,私のプログラムは類数を多めに見積もってしまうようです。今のところ原因は特定できておらず,修正できませんでした。
プログラマとしては負けた感じがして悔しいのですが,ここでは Sage を使うことにしましょう。
Sage には代数体の類数を計算する関数が用意されており,類数を簡単に計算できます。
ところで「類数 57 である虚二次体」を列挙したいのですが,いったいどこまで列挙すれば良いのでしょう。いつまでも無限に計算し続けるしかないのでしょうか。
これについてはポジティブな回答ができます。実は,類数 57 の虚二次体は有限個しかないのです。有限個であれば,十分に時間があればすべて列挙することが可能ですね。
類数 以下の虚二次体の個数と最大は,Watkins の以下の論文によってすべて明らかになっています。
論文によると類数 57 の虚二次体の個数は 179 個で,最大の虚二次体は です。ちなみに,これらの事実は OEIS に載っています。
A038552 Largest squarefree number k such that Q(sqrt(-k)) has class number n.
http://oeis.org/A038552
# 類数 57 の虚二次体のうち最大のものは a = 615883
A046125 Number of negative fundamental discriminants having class number n.
http://oeis.org/A046125
# 類数 57 の虚二次体の個数は 179 個
以上の議論より まで調べれば十分です。Sage を使って類数 のすべての虚二次体を列挙することにしましょう。
以上,全部で 179 個です。ちゃんと全部ありますね。これでクロスチェックができました。
検証に用いた Sage のコードは以下の通りです。実直に から順に列挙するプログラムです。
with open('{HOMEDIR}/class_number.csv','w') as fp: a = 3 while a < 615884: K.<b> = NumberField(x^2 + a) h = K.class_number() print >> fp, "{0}, {1}".format(a, h) a = a+1
{HOMEDIR} のところは,ホームディレクトリのパスなどを適当に入れてください。
一点注意があります。
上記のコードでは「 が平方因子を持たないかどうか」のチェックをしていません。
たとえば, のときに, の類数が であると出力されます。 より,平方因子 を持ちますね。実質的には を除いた の類数を計算していることになります。
私の検証では,平方因子を持つものを後から除いています。先ほど挙げた 179 個の は,すべて平方因子を持たないものとなっています。
「57 は 3 で割り切れる」の証明ができない
さて,それでは先の 179 個が条件を満たしているか確認しましょう。
結論を先に言うと,条件を満たすものは1つもありませんでした。したがって,補題を使って「57 は 3 で割り切れる」を証明することはできません。
まず,条件1つめです。 であるものは,以下の 158 個です。
次は,条件2です。この中から, か という形で表せるものは・・・
一つもありません。
・・・
以上により,今回の補題を使って「57 は 3 で割り切れる」は証明できないことが示されました。
「69 は 3 で割り切れる」は証明できる
上に述べたように のケースでは残念な結果に終わりました。
ところで今回の方法を使った「3 で割り切れる」の証明は,どの程度可能なものなのでしょうか。
やってみると の場合もうまくいかないことがわかりました。 の場合は,条件2を通過するパターン()は見つかったのですが,定められた解以外の整数解は存在しませんでした。結構,難しいようです。
いろいろ試してみた結果, のケースでうまくいくことを発見しました。
本題とはズレますが,今回の方法を使って「69 は 3 で割り切れる」ことを示して終わりにしたいと思います。
補題より,もし が で割り切れないならば,
の整数解は に限られる.
一方 には,上記のほかにも整数解 が存在する。補題の対偶により, は で割り切れる.
より, は で割り切れる.
追記のまとめ
残念ながら,今回の方法では「57 は 3 で割り切れる」は証明できませんでした。
57 に挑むのは,私にはまだまだ早かったようです。
また別証明を思いついたら,ブログにまとめたいと思います。
それでは,追記まで読んでくださって,ありがとうございました!
追記2 (2017/02/06):
twitterで教えていただいたのですが,途中でご紹介したWatkinsさんのウェブサイトに,100以下の虚二次体の類数一覧が載っているようです。
以上のページの
// Abelian invariants [ 57 ]
と書いてある箇所が,該当の部分ですね。ちゃんと載せてくれていたんですね。知りませんでした。
あわせて教えていただいたのですが「上智大学数学講究録」の「No.28 虚二次体のイデアル類群表」にも類数の情報が載っているみたいです。なるほど,こういう情報が紙媒体で存在していたのですね。
現在は上智大学の学術情報リポジトリに移行中とのことですが,まだこの号は見れないようです。
追記3(2022/08/05):実は証明できた!
実は今回の方法で証明できることがわかりました。
詳しくは下記のツイートをご覧ください。
虚2次体 ℚ(√-28979) の類数が 57 であることを使って「57 は 3 で割り切れる」を証明しました。
— tsujimotter 日曜数学者 (@tsujimotter) 2021年3月17日
Special thanks: @ONEWAN さん https://t.co/yt86VTtR5g pic.twitter.com/OT9jX0KRY2
ポイントは、私が「補題」の本来の主張を誤解していたことでした。正しい「補題」の主張は次のとおりです:
の類数が で割り切れないならば,整数 に対して,
の整数解は以下のいずれかに限られる:
- のとき,
- のとき,
①・②のいずれでもない場合,整数解は存在しない
上記の赤字の箇所が、足りなかった箇所です。
これがあることによって、補題の対偶を取る際に適用できる のパターンが大幅に増えます。これにより「57は3で割り切れる」の証明が可能になるというわけです。
*1:ちなみに,カール・ジーゲルによって「 上の楕円曲線の整数解は有限個」という定理が示されています。