楕円曲線と群:p進体とテイト加群
このワークシートはMath by Codeの一部です。
今回は有限体Fp上の楕円曲線の解をp進テイト加群を使ってさぐっていきましょう。
1.アイディアを仕込む
アイディアを仕込む
p進テイト加群に入る前に前提となるアイディアを仕込みましょう。
それは「p進体」、「加群」、「テイトさん」の3つです。
<p進的の目的>
整数ZにN進法というのがありましたね。
有理数QにもN進法を導入します。
ただ、文脈が全然ちがうので要注意です。
整数のN進法では、10進数ありきから2進、16進への変換、そして逆変換という数の表示に使う文字数と桁数にかかわる表示法の変更ということが、その有用性の核心でしたね。
ところが、有理数QのN進法は、素数pを使って有理数Qを連続数Rに近づけるというものです。
素数1つ1つのmod pの世界では、それこそギザギザの解像度で数を見るしかありませんでした。それを、p,p^2,p^3,......と∞に刻みを上げることで、数の世界をみる解像度を実数のようにあげるのです。
つまり、素数pのべきを法にすることで、「すき間だらけのQをRのように連続化する」というとんでもない道具なのです。
<整数を2進的にする>
その話をきくと、pを何乗もしたら、法が大きくなり、目があらくなるのではないかというイメージがありますよね。
それが逆なんです。
みなさんは、「継子立て」とか、カードを使った規則正しい間引き方の話を聞いたことがありますよね。
1から32の番号のついた32枚のカードがあります。
上から1枚おきにカードを捨てます。(人を間引く、つまり、殺します。怖いですね。)
1,3,5,7、。。。。が捨てられるので、最初の1周のあと2の倍数が残ります。
1周目の生き残りは、{2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32}。
残った2の倍数のうち、1,3,5,7番目。。。。が捨てられて、4の倍数が残ります。
2周目の生き残りは、{4,8,12,16,20,24,28,32}。
次は8の倍数が残ります。{8,16,24,32}。
16の倍数が残ります。{16,32}。
32の倍数が残ります。{32}、32が残りました。おめでとうございます。
これと同じロジックで使って、2のべきで仕分け(分類)をしましょう。
左から0から31までの数が小さい順に並んでます。
2で割って余りが、0の数は左、余り1の数は右によせます。
{0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30} : {1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31}
次に、2×2で割った余りが、0,2、1,3の4グループにします。
{0,4,8,12,16,20,24,28}:{2,6,8,10,14,18,22,26,30}:{1,5,9,13,17,21,25,29}:{3,7,11,15,19,23,27,31}
次に、2×2×2の余りが、0、4,2、6、1,5,3,7の8グループにします。。。。
{0,8,16,24}:{4,12,20,28}:{2,10,18,26}:{6,14,22,30}:{1,9,17,25}{5,13,21,29}:{3,11,19,27}:{7,15,23,31}
{0,16};{8,24}:...............................
{0}:{16}:{8}:{24},......
さっきと全然ちがうように見えなくもないですが、
たとえば、2の倍数の集合、先頭グループ、
に目をつけると同じことが起きてます。
毎回、グループサイズが半分になる。
毎回、そのつど同じグループになった数は「余りを取り除くと、同じだけ2でピッタリ割り切れ」ます。
つまり、「公差が2のべきの等差数列」になっています。
言い換えると、
毎回、「2のべきを法として合同」という分類をしているわけですね。
この分類で「いっしょのグループでいられる回数」が長い数は「合同の度合い」が高いですよね。
だから、「2数に対して、2で割り切る最高の回数の差」を数と数の「距離」とするのです。
余りのない数のグループでは、2の指数が大きいほど、0と同じグループにいられますよね。
そうすると面白いことがおきます。
2,4,8,16, ......と2のべきを増やすほど0と長く一緒にいられるので距離が近いということです。
2のべきを増やすほど、数を分類する網目が細かくなるということですね。
一般化すると、
0、p、p^2,p^3,....とpのべきを上げることで、数を分類する網目が細かくなるということですね。
これが、p進でのグループ分けの発想では、pのべきが大きいほどきめ細かく数を仕分けられるため、
これを続けていけば、クリアになっていくというイメージがわきましたか?
<有理数をp進的にする>
今は整数Zをpのべきで分類する話でした。
有理数も同じ視点で分類してみよう。
有理数を「pのm乗までで割り切れる」ときに、aからmを取り出します。
それを比べて距離を比べたいですよね。
そこで、有理数aがp^m*u/v(ただし、m,u,v in Zで、u,vはpの倍数ではない)のときに、
有理数a( in Q)のp進付値ord_p(a)=mとします。
たとえば、a=5^10 /6ならば、aからは10が取り出せます。
また、2数a,bのord_p(a-b)が大きいなら、a,bはp進的に近いのです。
もしanが数列だとして,ord_p(an-b)が∞になるとしたら、
数列anはbにp進的に収束するということですね。
<p進的からp進体へ>
p進付値の差が大きいほど近くなるというイメージにあう距離の定義をしましょう。
有理数aのp進絶対値|a|_p=1/p^ord_p(a)
2数a,bの距離をd_p(a,b)=|a-b|_p
とします。
★ただし、記述が冗長になるので、添え字‗pは文脈上省略します。
<p進体Qpの作り方>
実数の連続性をどんな有理数εでも、番号m,n≧Nなら|x_m-x_n|<εとなるNがあるというコーシー列によって、有理数Qを実数Rにする方法でした。
くわしい計算は省きますが、2点のp進距離が決まり、収束も定義できるから、実数を作ると同様にp進的な距離の定義により、
有理数Qをp進有理数Qpにできるのです。
<p進整数の作り方>
p進有理数Qpの部分環としてp進整数Zpができます。
Qpの要素aのp進付値が0以上に制限したものがZpです。
まず、p進的なp進の商群Xn=Z/Z_p^nというのを考えましょう。
商群のXn+1からXnへの写像fn:an+1→an
を考えて系列にしましょう。
すると、...→X5→X4→X3→X2→X1ができて、この系列の
積集合ΠXnの部分集合{a∞...(a5),(a4),(a3),(a2),(a1)}
を逆極限といい、lim←n Xnとかきます。
a1はp個のかたまりの1つ、
a2はそれぞれさらにp個にわけてかたまりの1つ、
a3はそれをさらにp個にわけたかたまりの1つ、。。。
さっきの2進的な仕分けを思い出してください。
これを逆にたどれば、n≧kならどんどんと収束して、1つのakに
おさまります。つまり、違うところから始めてもあるとこでは同じ番号のかたまりに納まるところがあるのです。
これはp進コーシー列の極限だから、最終的にはmod pだから、Zpに対応できます。
つまり、逆極限(lim←n Xn)→p進整数Zpという写像ができますね。
紛らわしいのですが、自由群と自由加群は群のイメージは同じですが、ちがう文脈で使います。
<自由群>
まず、
自由群というのは生成元の集合Sから適当に選んでならべて自由にワードを作るイメージです。
たとえば、
数字集合S={1,2,7,6,9} から選んでならべると12、276、69などの語が作れるのですが、
2と7が逆文字にみえるから逆元とすると27は消えて、276=>6と簡約されます。6と9も逆と考えると空文字になってしまいます。このように自由にくっけながらも、逆元やゼロ元を考えると群が作れるというイメージです。
つまり、生成元Sをきめて、その自由な連結による集合としてF(S)を決めます。
そこに、要素の関係式を入れることで群ができるという発想だとも言えますね。
簡約ルール(関係式)によって、できる語がグループ化されるので、
群の構造ができます。
<自由加群>
それに対して、
自由加群というのはアーベル群を加法でかきます。
それを加群Gと呼ぶことにしましょう。
Gの要素が、Gの要素ui(i in range(n))を基底として、
係数ai( ai in Z)を使う線形結合Σai uiの形にかけるとき、
階数nの自由加群といいます。
このときに係数はZ^nの要素であるため、
自由加群はGに対するZ^nへの写像
ととらえることもできるね。
Gを多重の格子、グリッドへの落とし込みですね。
n等分点E[n]がZn⊕Znに対応したことにつながっていきそうですね。
2.テイトさん登場
さあ、いよいよ
テイトさん登場です。
<テイト加群>
2つのベクトルω1,ω2が作る複素平面に格子L=Zω1+Zω2を用意しします。
こうすると、楕円曲線を複素数体C上のトーラスC/Lできれいに視覚化できましたね。
とりあえず、標準形E:y^2=4x^3-g2 x-g3を使いましょう。
素数pを1つ固定しておきます。
すると、
素数pに対するp^n等分点E[p^n]を考えることができるでしょう。
E[p]はp等分点だからp^2個の点
E[p^2]はp^2等分点だから(p^2)^2=p^4個の点
E[p^3]はp^3等分点だから(p^3)^2=p^6個の点
........
前の階層の点をp倍すれば、次の点にぴったりくるので、
ここで、p倍写像p:E[p^n+1]→E[p]を作りましょう。
これをさっきXn+1→Xnの系列を作ったようにX1まで系列を作ろう。そして、逆極限をするのです。
これをテイト加群Tp(E)といいます。
つまり、
Tp(E)=lim←E[p^n]
細かくフラクタルのように2次元方向に解像度が上がる系列をぎゅっと逆にもどして収束させたものが「p進テイト加群Tp[E]」なのです。
どんどん網目を細かくした系列をZpにしてぎゅっと中に取り込んだ「階数2の自由Zp加群」なのです。
2階の自由加群ということは、2つの基底でデジタル化できるのでした。
代数方程式を解けるようにしたQ*をQを拡大した代数閉包とすると、
ガロア群G~Gal(Q*/Q) の要素ρでかき混ぜることができますね。
この群の基底をe1,e2をして、Tp(E)にガロア群Gの要素ρでかき混ぜると、e1はe1とe2の線形結合となり、e2もe1とe2の線形結合になります。
ρをZpが成分の行列であらわすと、{{a,b},{c,d}}のようなるでしょう。
だから、ρ:G→GL2(Zp)という写像ができる。
出ました。またまた、群を行列に表現することができるのです。
この写像で行列が単位行列になってしまう核をKer ρとしよう。
これって、Qにすべてのp^n等分をすべてエクステした
超巨大な無限次拡大体Kp∞=Q(E[p^∞])の対称性、
Gal(Q*/Kp∞)そのもものですね。
楕円曲線Eは素数lでよい還元をもつ、
つまりmod lで曲線Eがつぶれたり、尖ったりしないものとします。
Eをつぶさない素数lでガロア群の親玉フロベニウスφlの共役類を
行列ρ_p(φl)に入れてみます。
det(ρ_p(φl))=l
Tr(ρ_p(φl))=al
となるのです。
alとは何か?
素数lを法とする有限体Flに関係します。
やっと有限体につながりましたね。
modl での解の個数にO∞の1個をたした解の個数を♯E(Fl)とすると、
al=l+1-♯E(Fl)
としても求められます。
<振り返り>
すごいです道のりでしたね。
地面には地雷があり空からミサイルが飛んでくる。
そんな戦地さながらでした。
お宝の残像がかすかにあるだけの茨の道。
そんな過酷な状況で重武装(p進テイト加群という4Kカメラ)で照らし出した宝石
という感じでしょうか。
でも、こうなると、リーマン仮説、リーマン予想、ゼータ関数の局所と大域の関係性
これらがクリアになるとさらに、明確な根拠のもとに関係性が4Kどころか16Kレベルで
肉眼をこえた極限の説得力で明確になるのでしょうね。
たぶん、最先端の多くの数学者はその天国をめざして、
命をけずって考え続けているのだろう
という気分だけは味わえたかもしれません。
課題:p進的に2整数の距離をはかろう。
a=slider(1,100,1)
b=slider(1,100,1)
array=sequence(1+2k,k,1,20,1)
arrayp=KeepIf(IsPrime(k),k,array)
p={2}
ps=p.append(arrayp)
n=slider(1,Length(ps),1)
p=Elemental(ps,n) #p
diff=if(a-b>0,a-b,b-a)
cnt=min(ceil(log(a)/log(p)),ceil(log(b)/log(p))) #pのべきの上限
nums=Sequence(p^k,k,1,cnt) #pのべきの数列
res=Zip(Mod(diff,k),k,nums) #2数差をpのベキで割った余りの数列
zeroOne=Zip(if(k!=0,1,0),k,res)
m=indexOf(1,zeroOne)-1 #a,bのp進のべきの近さ(まだ反比例状態)
dist=FractionText(1/p^m)
text1=""+a+"と"+b+"の"+p+"進的な距離は,差が"+p+"の”+m+"乗まで割り切れるから"+dist+""
#たとえば、a=33, b=17, n=1つまりp=2にするとp進的な距離が1/16と表示される。
楽しいね。