STAGE 6
曲線の指紋
mod p で点を数えて aₚ をつくる
🎯 ミッション
楕円曲線 y²+y=x³−x² の mod p での解の個数 Nₚ を p=2, 3, 5 で数え、ずれ aₚ=p−Nₚ を求めよう。シミュレータで 97 までの aₚ の列を作れば合格。
未達成

ねこ博士
STAGE4 の最後に、「式を素数 p ごとに mod p で見て、解の個数を数えると、その式の指紋ができる」と話したね。今日は、それを楕円曲線でやってみる。使うのは、この曲線だ。
y²+y=x³−x²
y²+y=x³−x²

うさ美
y²+y になっていて、STAGE5 の y²=x³+ax+b の形とは少し違います。

ねこ博士
中身は同じ仲間なんだ。y+1/2 を Y とおくと、Y²=y²+y+1/4 だから、式は Y²=x³−x²+1/4 になる。x² の項も、x を少しずらせば消せる。ただ、そうすると分数が出てくるね。mod 2 で見たいときに 1/2 は困るから、はじめから y²+y の形で書いておく習慣があるんだ。

うさ美
mod 2 では 2 が 0 と同じなので、1/2 は「0 で割る」ことになってしまう、ということですね。

ねこ博士
そう。では始めよう。素数 p を1つ決めて、0〜p−1 の x と y の組 (x, y) のうち、y²+y≡x³−x² (mod p) をみたすものを数える。その個数を Nₚ と書く。まず p=5 で数えてごらん。

うさ美
左辺と右辺を別々に表にします。
右辺 x³−x²:x=0→0、x=1→0、x=2→8−4=4、x=3→27−9=18≡3、x=4→64−16=48≡3。
左辺 y²+y:y=0→0、y=1→2、y=2→6≡1、y=3→12≡2、y=4→20≡0。
x=0 と x=1 では右辺が 0 なので、左辺が 0 になる y=0, 4 の2個ずつ。x=2 の 4 と、x=3, 4 の 3 は、左辺に出てこないので 0 個。合計で N₅=4 です。
右辺 x³−x²:x=0→0、x=1→0、x=2→8−4=4、x=3→27−9=18≡3、x=4→64−16=48≡3。
左辺 y²+y:y=0→0、y=1→2、y=2→6≡1、y=3→12≡2、y=4→20≡0。
x=0 と x=1 では右辺が 0 なので、左辺が 0 になる y=0, 4 の2個ずつ。x=2 の 4 と、x=3, 4 の 3 は、左辺に出てこないので 0 個。合計で N₅=4 です。

ねこ博士
よくできたね。ここで、Nₚ がだいたいどのくらいになるか考えてみよう。x を1つ決めるごとに、y はおよそ何個見つかると期待できるかな?

うさ美
p=5 では、左辺 y²+y の値は 0 が2回、2 が2回、1 が1回で、3 と 4 は0回でした。値ごとに 0〜2 回とばらつきますが、5 個の y で 5 回分なので、ならすと1つの値につき1回です。右辺の値に対して y が平均1個なら、x が p 通りなので、Nₚ はだいたい p 個、ということですか?

ねこ博士
そう。だから、実際の個数が目安の p からどれだけずれたかを、次のように測る。
aₚ=p−Nₚ(Nₚ は mod p での解 (x, y) の個数)
目安の p より点が少なければ aₚ は正、多ければ負

うさ美
p=5 なら a₅=5−4=1 です。p=2 と p=3 もやってみます。
p=2:右辺は x=0→0、x=1→0。左辺は y=0→0、y=1→2≡0。どの x でも y が2個なので N₂=4、a₂=2−4=−2。
p=3:右辺は x=0→0、x=1→0、x=2→8−4=4≡1。左辺は y=0→0、y=1→2、y=2→6≡0。x=0, 1 で2個ずつ、x=2 は左辺に 1 が出てこないので 0 個。N₃=4、a₃=3−4=−1。
p=2:右辺は x=0→0、x=1→0。左辺は y=0→0、y=1→2≡0。どの x でも y が2個なので N₂=4、a₂=2−4=−2。
p=3:右辺は x=0→0、x=1→0、x=2→8−4=4≡1。左辺は y=0→0、y=1→2、y=2→6≡0。x=0, 1 で2個ずつ、x=2 は左辺に 1 が出てこないので 0 個。N₃=4、a₃=3−4=−1。

ねこ博士
ここからは計算をコンピュータに任せよう。97 までの素数について aₚ を計算すると、こうなる。
p: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, …, 97
aₚ:−2, −1, 1, −2, 1, 4, −2, 0, −1, 0, 7, 3, −8, −6, 8, …, −7
mod p で点を数えるシミュレータ(曲線 y²+y=x³−x²)。0〜p−1 の格子の上で、式をみたす (x, y) を緑の点で示す。点の数が Nₚ、ずれが aₚ=p−Nₚ。点は y=(p−1)/2 の高さを軸に上下対称に並ぶ(y を p−1−y に変えても y²+y の余りは変わらない)

うさ美
正になったり負になったり、規則が見えません。でも、どれも p に比べると小さいです。p=97 でも −7 です。

ねこ博士
ずれが小さいことには理由がある。1933年にドイツのハッセが、どんな楕円曲線でも |aₚ|≦2√p、つまりずれは p の平方根の2倍を超えないことを証明した。p=97 なら 2√97≒19.7 だから、aₚ は −19 から 19 の間に収まる。

うさ美
ずれが p の平方根くらいに収まるなら、Nₚ はどの素数でも p に近いんですね。どの素数でも、同じように数えていいんですか?

ねこ博士
ほとんどの素数ではそうだ。ただ、この曲線には特別な素数が1つある。11 だ。mod 11 で見ると、この曲線は自分自身と交わる点をもってしまう。STAGE5 で、そういう形は楕円曲線に含めないと言ったね。普通の数の世界ではきれいな楕円曲線なのに、mod 11 の世界でだけ形がこわれるんだ。こういう素数を、その曲線の悪い素数という。この曲線の悪い素数は 11 だけだ。悪い素数からは、導手(どうしゅ)と呼ばれる数が決まる。悪い素数の掛け算でできた数で、この曲線の導手は 11。導手は、次のステージで大事な役をする。

うさ美
曲線ごとに、悪い素数と導手と、aₚ の列が決まるんですね。この列は、曲線の式を知っていれば計算できます。逆に、列から曲線について何か分かるんですか?

ねこ博士
いい質問だね。じつは、aₚ の列には、その曲線の有理点がどれくらいたくさんあるかといった、深い情報まで詰まっていると考えられている。けれど、今日いちばん見てほしいのは別のことだ。この一見でたらめな列 −2, −1, 1, −2, 1, 4, −2, 0, … を、楕円曲線とはまったく関係のない世界から取り出す方法がある。次のステージで、その世界をのぞいてみよう。この表は、そこでもう一度使う。
【このステージの成果】
y²+y=x³−x² は y+1/2 を Y とおくと Y²=x³−x²+1/4 の形。mod 2 でも扱えるよう y²+y の形で書く
Nₚ=mod p で y²+y≡x³−x² をみたす (x, y) の個数。目安は p 個
aₚ=p−Nₚ:a₂=−2、a₃=−1、a₅=1、a₇=−2、a₁₁=1、a₁₃=4、…
ハッセの定理(1933年):|aₚ|≦2√p
悪い素数=mod p で曲線の形がこわれる素数(この曲線では 11 だけ)。悪い素数から決まる導手は 11
確認クイズ
Q1. aₚ の定義として正しいものは?
正解! x を1つ決めると y は平均1個見つかるので、解の個数の目安は p 個。実際の個数 Nₚ とのずれ aₚ=p−Nₚ が、曲線の指紋になる。
Q2. ある素数 p で、ある楕円曲線の mod p での解がちょうど p+3 個あった。aₚ は?
正解! aₚ=p−Nₚ=p−(p+3)=−3。点が目安より多いと aₚ は負になる。
Q3. ハッセの定理によると、p=97 のとき aₚ が取りうる範囲は?
正解! |aₚ|≦2√p で、2√97≒19.7。p が大きくなっても、ずれは p に比べてずっと小さい。