Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-数学- 数学ガール・フェルマーの最終定理10.6 谷山志村の定理

梨の花

 

結城浩さんの著書「数学ガール フェルマーの最終定理」では第10章で、ワイルズによる証明の流れが、ミルカさんによって語られます。もちろんそこで大事なのが、谷山志村予想です。ミルカさんは具体例として、

$$ q\,\prod_{n=1}^{\infty }{\left(1-q^{4\,n}\right)^2\,\left(1-q^{8\,n}\right)^2} $$

という保型形式と

$$y^2=x^3-x$$

という楕円曲線の間にある不思議な関係を実際に計算して見せてくれます。この関係が、どんな楕円曲線に対しても対応する保型形式との間で成り立つ、というのが谷山志村予想であり、谷山志村・ワイルズの定理であるわけです。

 

数学ガール/フェルマーの最終定理 (数学ガールシリーズ 2)

数学ガール/フェルマーの最終定理 (数学ガールシリーズ 2)

 

 

ここでミルカさんが見せてくれた計算をmaximaを使って再現してみます。まず、与えられたx, yの多項式に対して、法pでの解の個数を計算する関数Nsolve(elc,p)を定義します。やっていることは「僕」や「テトラちゃん」「ユーリちゃん」がやったようにx, yを0〜p-1で変化させて総当りで試して、楕円曲線の右辺と左辺が法pで等しくなる回数を数えるだけです。

(%i1) Nsolve(elc,p):=block([c:0,evelc],
for x:0 while x<p do
for y:0 while y<p do
(evelc:ev(elc), if 0=mod(rhs(evelc)-lhs(evelc),p) then c:c+1),
return (c))$

 

ミルカさんが使った楕円曲線を定義します。

(%i2) elc:y^2=x^3-x;
$$ \tag{%o2} y^2=-x+x^3 $$

いよいよ2から100以下の全ての素数pについて楕円曲線(%o2)の法pでの解の個数を求め、pとの差分を求めます。
(%i3) for p:2 next next_prime(p) thru 100 do print(p,p-Nsolve(elc,p));
(*) 2 0
(*) 3 0
(*) 5 -2
(*) 7 0
(*) 11 0
(*) 13 6
(*) 17 2
(*) 19 0
(*) 23 0
(*) 29 -10
(*) 31 0
(*) 37 -2
(*) 41 10
(*) 43 0
(*) 47 0
(*) 53 14
(*) 59 0
(*) 61 -10
(*) 67 0
(*) 71 0
(*) 73 -6
(*) 79 0
(*) 83 0
(*) 89 10
(*) 97 18
$$ \tag{%o3} \mathbf{done} $$

一方、次のqの式で表される無限積(この式は保型形式の性質を持っています)を展開してみます。ここでqsexpand()を使います。

(%i4) MF:q*product((1-q^(4*n))^2*(1-q^(8*n))^2,n,1,inf);
$$ \tag{%o4} q\,\prod_{n=1}^{\infty }{\left(1-q^{4\,n}\right)^2\,\left(1-q^{8\,n}\right)^2} $$
(%i5) powerdisp:true;
$$ \tag{%o5} \mathbf{true} $$
(%i6) qsexpand(MF,100);
$$ \tag{%o6} q-2\,q^5-3\,q^9+6\,q^{13}+2\,q^{17}-q^{25}-10\,q^{29}-2\,q^{37}+10\,q^{41}+6\,q^{45}-7\,q^{49}+14\,q^{53}-10\,q^{61}-12\,q^{65}-6\,q^{73}+9\,q^{81}-4\,q^{85}+10\,q^{89}+18\,q^{97} $$
与えられた楕円曲線の法pでの解の個数Nsolve()とpの差分のリストとこの保型形式のベキ級数の係数を見比べてみてください。素数次数のところでの係数と、解の個数とpの差分が完全に一致していることがわかります。

 

もっと大きい素数ではどうなっているのでしょうか。例えば3000の直後の素数は3001です。法3001での楕円曲線の解の個数と3001の差を求めると-102となります。

(%i18) next_prime(3000);
$$ \tag{%o18} 3001 $$
(%i19) 3001-Nsolve(elc,3001);
$$ \tag{%o19} -102 $$

 

保型形式を3100次まで展開して、3001次の係数を取り出すと、
(%i20) qsexpand(MF,3100)$
(%i21) coeff(%,q,3001);
$$ \tag{%o21} -102 $$

ちゃんと一致します。

 

こんなことが簡単なプログラムで試すことができるのです。