東池袋 Adomani

 

楕円曲線にはワイエルシュトラスの標準形( ( y^2=x^3+a,x+b ) )という分かりやすい形があるにもかかわらずしばしば(%o1)のような形で書かれます。また標数2や3の有限体を係数とする場合にはワイエルシュトラス標準形は使えない、という記述がよくあります。

 (%i1) elc:y^2+x*y+y=x^3-x;

$$ ag{%o1} y^2+x,y+y=x^3-x $$

 

またこの記事で定義したelcの法pでの解の個数を求める関数NsolveF(elc,p)ではelcに制約があり、y^2=xの3次式、の形である必要があります。では(%o1)の形の楕円曲線にはNsolveF(elc,p)を適用できないのでしょうか。

この記事ではこのあたりの話を探ってみましょう。といっても話は実は簡単です。法pでの平方完成なのです。

早速法pで2次式( c_{2},x^2+c_{1},x+c_{0} )を平方完成する関数を定義してみます。有理数係数での平方完成の式 ( c_{2},left(x+frac{c_{1}}{2,c_{2}} ight)^2-frac{c_{1}^2}{4, c_{2}}+c_{0} ) を思い出し、その中の分数 ( frac{1}{2,c_{2}} ) や ( frac{1}{4,c_{2}} ) を、法pでの乗法の逆元(を求めるmaximaの組み込み関数inv_mod(a,p))に置き換えると次の定義が得られます。

(%i2) sq_complete(poly,var,p):=block([c2,c1,c0],

            c2:coeff(poly,var,2),c1:coeff(poly,var,1),c0:coeff(poly,var,0),

            c2*(var+c1*inv_mod(2*c2,p))^2+c0-c1^2*inv_mod(4*c2,p))$

早速(%o1)の左辺を法pで平方完成してみます。
(%i3) sq_complete(lhs(elc),y,p)=rhs(elc);
$$ ag{%o3} left(y+mathrm{\%invunderline{quad}mod}left(2 , p ight),left(x+1 ight) ight)^2-mathrm{\%invunderline{quad}mod}left(4 , p ight),left(x+1 ight)^2=x^3-x $$
(%i4) %-second(lhs(%));
$$ ag{%o4} left(y+mathrm{\%invunderline{quad}mod}left(2 , p ight),left(x+1 ight) ight)^2=mathrm{\%invunderline{quad}mod}left(4 , p ight),left(x+1 ight)^2+x^3-x $$

この平方完成が意味を持つためには法pでの乗算で2に逆元がなければなりません。ところが法2では2≡0なので乗法の逆元がありません。というわけで平方完成が出来ないのです。

この式の右辺はxの3次式です。この中の2次の項を消す変数変換を施すとワイエルシュトラス標準形になります。この変換をチルンハウス変換と呼ぶのですが、その中に1/3が登場するのです。このため、法pの乗算で3の逆元も必要なのですが、法3では3の逆元がありません。

これらの理由により法2や法3で楕円曲線を考える場合、ワイエルシュトラス標準形は使えないのです。

 

さて(%o4)の左辺を改めて( y^2 )と置いてみます。

(%i5) elc2:y^2=rhs(%);
$$ ag{%o5} y^2=mathrm{\%invunderline{quad}mod}left(4 , p ight),left(x+1 ight)^2+x^3-x $$

この形であれば、NsolveF(elc,p)で高速に解の個数を求めるのに使えます。ただしpを決めるごとにinv_mod(4,p)の値が決まることに注意してください。(%o1)であれば係数は法pに関係なく決まっているので、いろいろな説明では使いやすいわけです。

では早速(%o5)をNsolveF()に適用することで高速に解の個数を求めてみます。ただしp=2だけはNsolve()を使います。
(%i6) block([res],res:2-Nsolve(elc,2),2,
for p:3 next next_prime(p) thru 200 do res:append(res,p-NsolveF(elc2,p),p),
res);
$$ ag{%o6} left[ left[ -1 , 2 ight] , left[ -2 , 3 ight] , left[ 0 , 5 ight] , left[ 1 , 7 ight] , left[ 0 , 11 ight] , left[ -4 , 13 ight] , left[ 6 , 17 ight] , left[ 2 , 19 ight] , left[ 0 , 23 ight] , left[ -6 , 29 ight] , left[ -4 , 31 ight] , left[ 2 , 37 ight] , left[ 6 , 41 ight] , left[ 8 , 43 ight] , left[ -12 , 47 ight] , left[ 6 , 53 ight] , left[ -6 , 59 ight] , left[ 8 , 61 ight] , left[ -4 , 67 ight] , left[ 0 , 71 ight] , left[ 2 , 73 ight] , left[ 8 , 79 ight] , left[ -6 , 83 ight] , left[ -6 , 89 ight] , left[ -10 , 97 ight] , left[ 0 , 101 ight] , left[ -4 , 103 ight] , left[ 12 , 107 ight] , left[ 2 , 109 ight] , left[ 6 , 113 ight] , left[ -16 , 127 ight] , left[ 18 , 131 ight] , left[ 18 , 137 ight] , left[ 14 , 139 ight] , left[ -18 , 149 ight] , left[ 8 , 151 ight] , left[ -4 , 157 ight] , left[ -16 , 163 ight] , left[ -12 , 167 ight] , left[ -12 , 173 ight] , left[ -12 , 179 ight] , left[ 20 , 181 ight] , left[ 24 , 191 ight] , left[ 14 , 193 ight] , left[ -18 , 197 ight] , left[ 20 , 199 ight] ight] $$
(%i7) powerdisp:true;

この楕円曲線に対応する保型形式は(%i8)の第一引数の式となります。これを200次までqsexpand()を使って求めてみます。
$$ ag{%o7} mathbf{true} $$
(%i8) qsexpand(q*product((1-q^n)*(1-q^(2*n))*(1-q^(7*n))*(1-q^(14*n)),n,1,inf),200);
$$ ag{%o8} q-q^2-2,q^3+q^4+2,q^6+q^7-q^8+q^9-2,q^{12}-4,q^{13}-q^{14}+q^{16}+6,q^{17}-q^{18}+2,q^{19}-2,q^{21}+2,q^{24}-5,q^{25}+4,q^{26}+4,q^{27}+q^{28}-6,q^{29}-4,q^{31}-q^{32}-6,q^{34}+q^{36}+2,q^{37}-2,q^{38}+8,q^{39}+6,q^{41}+2,q^{42}+8,q^{43}-12,q^{47}-2,q^{48}+q^{49}+5,q^{50}-12,q^{51}-4,q^{52}+6,q^{53}-4,q^{54}-q^{56}-4,q^{57}+6,q^{58}-6,q^{59}+8,q^{61}+4,q^{62}+q^{63}+q^{64}-4,q^{67}+6,q^{68}-q^{72}+2,q^{73}-2,q^{74}+10,q^{75}+2,q^{76}-8,q^{78}+8,q^{79}-11,q^{81}-6,q^{82}-6,q^{83}-2,q^{84}-8,q^{86}+12,q^{87}-6,q^{89}-4,q^{91}+8,q^{93}+12,q^{94}+2,q^{96}-10,q^{97}-q^{98}-5,q^{100}+12,q^{102}-4,q^{103}+4,q^{104}-6,q^{106}+12,q^{107}+4,q^{108}+2,q^{109}-4,q^{111}+q^{112}+6,q^{113}+4,q^{114}-6,q^{116}-4,q^{117}+6,q^{118}+6,q^{119}-11,q^{121}-8,q^{122}-12,q^{123}-4,q^{124}-q^{126}-16,q^{127}-q^{128}-16,q^{129}+18,q^{131}+2,q^{133}+4,q^{134}-6,q^{136}+18,q^{137}+14,q^{139}+24,q^{141}+q^{144}-2,q^{146}-2,q^{147}+2,q^{148}-18,q^{149}-10,q^{150}+8,q^{151}-2,q^{152}+6,q^{153}+8,q^{156}-4,q^{157}-8,q^{158}-12,q^{159}+11,q^{162}-16,q^{163}+6,q^{164}+6,q^{166}-12,q^{167}+2,q^{168}+3,q^{169}+2,q^{171}+8,q^{172}-12,q^{173}-12,q^{174}-5,q^{175}+12,q^{177}+6,q^{178}-12,q^{179}+20,q^{181}+4,q^{182}-16,q^{183}-8,q^{186}-12,q^{188}+4,q^{189}+24,q^{191}-2,q^{192}+14,q^{193}+10,q^{194}+q^{196}-18,q^{197}+20,q^{199} $$

素数次数の係数を(%o6)と見比べてみれば谷山志村対応が成り立っていることが分かりますね。

 

ところで今回使った楕円曲線と保型形式ですが、以前にも紹介したことのあるwww.LMFDB.org で見つけたものです。

The LMFDB Collaboration, The L-functions and Modular Forms Database, Elliptic Curve 14.a5 (Cremona label 14a4), http://www.lmfdb.org/EllipticCurve/Q/14/a/5 , 2016, [Online; accessed 5 May 2016].

The LMFDB Collaboration, The L-functions and Modular Forms Database, Modular Form 14.2.1.a, http://www.lmfdb.org/ModularForm/GL2/Q/holomorphic/14/2/1/a/ , 2016, [Online; accessed 5 May 2016].