ペアリングの定義

Pairing 2010のSilvermanの講演で, 暗号の本に載ってるのと違った, より抽象的な定義の説明があったので多少(どころではない分量になってしまったけど)補足説明してみます.
群, 環, 準同型定理, 位相空間, 多様体のおさらいは駆け足でしますが, 別途勉強しておいたほうがよいでしょう.

(注意) このHTMLの最新版はpairing-docで公開しています. HTMLはもう更新されません.


内容予定
基底
まずはいくつかの基本的な用語から.

Rを可換環, MをR加群とします. 可換環は四則演算のうち割り算を考えない集合です. Z/mZとか行列の集合とかそんなのです. R加群はそれ自体がアーベル群で, Rと掛け算ができるものと思ってよいです. r∈R, m1, m2∈Mがあったらrm1∈Mで, r(m1 + m2) = rm1 + rm2 が成り立ってたりします. まあ普通成り立ってて欲しいと思う性質が成り立ってます. 詳しい定義は略.

可換環Rがはそれ自体がR加群です. またRが体だったらR加群はベクトル空間になります. ベクトル空間だったら基底がありますが, R加群Mも, その任意の元を有限個の基底で表せるときがあります. すなわち

あるe1, ..., ed ∈ Mがあって
∀m ∈ M, ∃r1, .., rd ∈ R s.t.(such that) m = Σri ei.
Σri ei = 0ならばr1 = ... = rd = 0

一つ目の性質を有限生成, 二つ目の性質を一次独立と言います. 両方満たすときが基底です.

素朴なペアリング
ペアリングの性質をおさらいします.

e : M × M → RでR双線型なものをペアリングということにします. 片側を固定すると線型写像ということです. つまり

e(m + m', m'') = e(m, m'') + e(m', m'')
e(m, m' + m'') = e(m, m') + e(m, m'')
e(a m, m') = a e(m, m')
e(m, a m') = a e(m, m')

さて, 暗号でよく使われるペアリングではMは2個の基底からなるR加群です. 基底をe1, e2とするとMの元x, yはx = a e1 + b e2, y = c e1 + d e2と書けるので双線型性から

e(x, y) = ab e(e1, e1) + ad e(e1, e2) + bc e(e2, e1) + bd e(e2, e2)
となります. eij = e(ei, ej)とすると
e(x, y) = ab e11 + ad e12 + bc e21 + bd e22 --- (*1)

これはつまり, Mの基底e1, e2と適当なRの元 eijを決めると(*1)でペアリングを定義してもいいということです. となると単なる線型和ですね.

ただこれでは暗号には使えません. なぜなら基底e1とx = a e1が与えられたとき, aを求めることは離散対数問題の困難性から無理だからです. (*1)を明示的に計算できるならそもそも暗号に使えないということになります.

Rを体として, eiの生成する部分加群を<ei> := {rei|r∈R}とします. Mは<e1>と<e2>の直和なので, 任意の x ∈Mに対して係数は求められなくてもせめて x = u + v, u ∈<e1>, v ∈ <e2>と分解できれば何か情報を取れるかもと思ったことがありました. 残念ながら, 実はそういうふうに x を部分群の要素に分解できるなら, DH問題が解けてしまう(ので分解は無理)ということが分かりました(証明はたいして難しくない). ベクトル分解問題と言ったりしてます(最初は2002年のISEC, SCIS2003で吉田さんと発表 cf. The Vector Decomposition Problem). その後はDuursmaや, Galbraithたちが精密化したり, Homomorphic Encryptionで参照されたり(今は使われない)したようです.

横道にそれましたが, 要は(*1)を違う形で(基底を使わない形で)定式化しないといけないということです. Silvermanによる解説はそれが主題です.

準同型写像の集合
しばらく無味乾燥なホモロジー代数の初歩に入ります. ここは難しくはないのですが一度は一歩一歩自分で手を動かして示さないといけないと思います.
キーワードは「短い完全列があれば長い完全列を作れる.」
M, N, P, QをR加群とします.

HomR(M, N) := { f : M→N | fはR加群として準同型写像 }とします(以後Hom(M, N)と略記). f(a m + b m') = a f(m) + b f(m')が成り立つということですね.

このHom(M, N)は写像の集合なわけですが, これ自体がR加群になります. 単位元は任意のm ∈ Mについてf(m) = 0とする0写像です. fについて逆元は(-f)(m) := -f(m)で定義します. つまりf, g ∈ Hom(M, N)に対して和を (f + g)(m) := f(m) + g(m), R倍を (rf)(m) := r * f(m)で定義するのです.

初めての人は, ここでまず何を示すべきか分かるでしょうか. まず上で定義した和やマイナスやR倍が正しい定義であること(well-defined)の確認です. それはf + g ∈ Hom(M, N)を示すということです. 「一見あたり前」に見えますが, 「関数の和がMからNへのR加群としての準同型写像であること」は自明ではありません. それをチェックしてみます.

(-f)(m + m') = -f(m + m') = -f(m) - f(m') = (-f)(m) + (-f)(m')
           ↑↑          ↑↑            ↑↑
          -fの定義から  fが準同型だから  -fの定義を再び適用
(f + g)(m + m') = f(m + m') + g(m + m') = f(m) + f(m') + g(m) + g(m') = (f + g)(m) + (f + g)(m')
               ↑↑                    ↑↑                         ↑↑
             f + gの定義から      f, gが準同型だから               f + gの定義を再び適用

同様に(f + g)(am) = a(f + g)(m)も示してください. これによりf + g ∈ Hom(M, N)を確認できました. (rf) ∈ Hom(M, N)についても, rfという関数の線型性を示す必要があります(自分でやること).

さて, これで何を示せたのかというと「Hom(M, N)がR加群になる」ということです.

HomからHomへの写像
P, Q, NがR加群だとするとHom(P, Q), Hom(N, Q)というR加群を作れました. このHomからHomへの写像を考えてみます.

φ:N → Pという準同型写像があったとしましょう. するとf ∈ Hom(P, Q)はPからQへの写像なのでφと合成するとf・φはNからQへの写像になります.

    f・φ
 N → P → Q
   φ   f

正確には (f・φ)(n) := f(φ(n)) で定義します. f・φ ∈ Hom(N, Q)を確認しましょう.

(f・φ)(an + bn') = f(φ(an + bn')) = f(aφ(n) + bφ(n')) = af(φ(n)) + bf(φ(n')) = a(f・φ)(n) + b(f・φ)(n')

f・φをφ*fとかくことにします. するとφ*はf ∈ Hom(P, Q)をf・φ∈ Hom(N, Q)に写す写像と考えられます. 実はφ*はHom(P, Q)からHom(N, Q)へのR加群として準同型写像になります.
φ* : Hom(P, Q) → Hom(N, Q)

最初は混乱するかもしれませんが, 大丈夫でしょうか. φ*が準同型写像だということは φ*(af + bf') = aφ*(f) + bφ*(f')を示す必要があるということです.

くどいですがやってみましょう. 上記の等号を示すということは関数として同じだということを示すことなので
φ*(af + bf')(n) = (af + bf')(φ(n)) = af(φ(n)) + bf'(φ(n)) = a(φ*f)(n) + b(φ*f')(n) = (aφ*(f) + bφ*(f'))(n)

一つ目の等号はφ*の定義, 二つ目の等号はHom()の演算(和とスカラー倍)の定義, ...となっています.

ここまでの流れをまとめます. P, Q, NがR加群で準同型φ:N → Pがあると準同型写像 φ* : Hom(P, Q) → Hom(N, Q) を構成できる.

kernelとimage
まず単射と全射の復習をしましょう.

f : P → Q が単射であるとは f(p) = 0 ⇔ p = 0
f : P → Q が全射であるとは任意のq ∈ Qに対してあるp ∈ Pが存在して f(p) = q

単射は同じものにいくことはない, 全射は全てに行き渡る, というイメージです.

(任意の)準同型写像 f : P → Q があったときに
Ker(f) := { p ∈ P | f(p) = 0 }
Im(f) := { f(p) | p ∈ P }
と定義します.

Ker(f)はfが0になる(つぶれてしまう)ようなPの元全体, Im(f)はfの行き先全体ということです. それぞれfのkernel, imageと呼びます.

Ker, Imを使って全射と単射を言い表すと
fが単射 ⇔ Ker(f) = {0}
fが全射 ⇔ Im(f) = Q
となります.

f : P → Q があると P/Ker(f) ≃ Im(f) が成り立ちます(準同型定理).

完全系列
加群の列を考えます. 結構抽象度が高くなってくるのでちゃんと手を動かしてみてください.

R加群P1, P2, ...の列とその間の準同型写像f1 : P1 → P2, ...があったときに Im(fi) = Ker(fi+1)が成り立つときその列を完全(系)列(exact sequence)といいます.
たとえば

       f
0 → P → Q

という完全列を考えます. 0というのは単位元0のみからなる加群のことです(集合としては{0}). 0からPへの写像は0を0に写すもの(一時的に0Pと書くことにします)しかないので普通省略します.

さて, 上記の列が完全であるということはIm(0P) = Ker(f)が成り立つということです.
Im(0P)は0なのでKer(f) = 0つまりfが単射であるということの言い換えに過ぎません. 同様に

  f
P → Q → 0

という完全列を考えてみます. Qから0への写像もQの全ての元を0に写す写像(0Q)しかないのでやはり省略します. これが完全だということはIm(f) = Ker(0Q)ということです. 0QはQの全ての元を0に写すのですからKer(0Q) = Qです. つまりIm(f) = Q. これはfが全射であることの言い換えです. 単なる言葉遊びが続きますがもう一つ.

       f
0 → P → Q → 0

が完全だとどうなるでしょうか. 0 → P → Qが完全であることからfは単射, P → Q → 0が完全であることからfは全射ということを意味しているので fは全単射, すなわち同型だということの言い換えです.

ペアリングの定義で重要なのは次の完全列です.

       ψ   φ
0 → M → N → P → 0 (*2)

これはφが全射, ψが単射, かつIm(ψ) = Ker(φ)であるということです. 特にφ・ψ = 0.

Homの左完全性
前節の完全列とHomとの関連を考えてみましょう.

加群の間の写像があるとHomを作れました. (*2)の他に加群Qを考えます. そうするとφ* : Hom(P, Q) → Hom(N, Q)という写像を作れました. 同様にψ* : Hom(N, Q) → Hom(M, Q)という写像も作れます. 実は

               φ*           ψ*
0 → Hom(P, Q) → Hom(N, Q) → Hom(M, Q)

が完全列となります. 完全列 M → N → P → 0 にHomを作用させて新しい完全列を作るので, これを Hom(, Q)の左完全性と言ったりします.

証明しましょう. まずφ*は単射です. なぜなら f ∈ Hom(P, Q)についてφ*(f) = 0とします. これは任意のn ∈ Nについてφ*(f)(n) = f(φ(n)) = 0ということですが, φは全射なので(完全列の仮定), φ(n)はPの全ての値をとります. 全てのPの値についてfが0ということはfは0写像ということです. つまり f = 0. φ*(f) = 0 ⇔ f = 0が言えたのでφ*は単射です.

次にψ*・φ* = 0を確認します.

任意のf∈ Hom(P, Q), m ∈ Mについて ψ*・φ*(f)(m) = ψ*(f・φ)(m) = (f・φ・ψ)(m) = f(φ(ψ(m))) = 0(φ・ψ = 0なので). これでIm(φ*) ⊆ Ker(ψ*)が言えました.

最後, Im(φ*) ⊇ Ker(ψ*) を示します. f ∈ Ker(ψ*) をとります. つまり任意の m ∈ Mについて ψ*(f)(m) = f(ψ(m)) = 0. ---(*3) この条件の元でfがIm(φ*)の元であること, すなわちあるg ∈ Hom(P, Q)についてf = φ*(g)を示す必要があります. 具体的に構成しましょう(ここで少し考えてみてください).

任意のp ∈ Pについてφは全射なのであるn ∈ Nがあってφ(n) = p. このとき g(p) := f(n)とします(実はこれ, 選択公理なんですが細かいことは気にしない). これはwell-definedです(nのとり方に寄らずg(p)が定まることを示す). なぜなら他のn' ∈ Nでφ(n') = pとするとφ(n - n') = 0. Im(ψ) = Ker(φ)より, あるm ∈ Mがあって ψ(m) = n - n'. すると(*3)の仮定により f(n - n') = f(ψ(m)) = 0. よって f(n) = f(n').

まだg : P → Q を構成しただけで, g ∈ Hom(P, Q)を示したわけではありませんが, それはgの作り方から容易に示せます. 以上で Im(φ*) = Ker(ψ*)となり完全性の証明が終わりました.

実はHomの*左*完全性という名前の示す通り, 右完全ではありません. つまりψ*は全射になるとは限らないのです. そこでどれぐらいずれてるかの調整のためにExtというものを考えます.

Extの定義のための準備
しばらくExtの定義のためのホモロジー代数の用語と基本的な定理を証明し続けます. 面倒だと思う人はさくっとExtまで飛ばしてください.
射影加群と射影分解
R加群Pが射影的であるとは任意のR加群A, Bと全射準同型写像f : A → B, 準同型写像h : P → Bがあったとき, ある準同型写像g : P → Aがあってh = f・gとできるときをいいます.
     P ―┐h
   g↓   ↓
     A → B → 0
       f

この初見ではどうみても作為的な定義が, 加群のコホモロジーの定義に絶大な威力を発揮します.

たとえばRは自身をR加群と思うと射影的です. なぜならf : A → B → 0, h : R → Bがあったとします. r ∈ Rについてh(r) = rh(1). fは全射なのであるa ∈ Aがあってf(a) = h(1). g : R → Aをg(r) = raと定義するとh(r) = rf(a) = f(ra) = f(g(r))が成り立つからです.

Rの元を並べて作った直和⊕Rを自由加群といいますが, 同様にして射影的であることを示せます.

さて, R加群Pに対してPのP個の直和P0 = ⊕λ∈PRを考えてλ番目をλ, それ以外を0に写す写像εを考えるとこれは全射です.

そのker(ε)に対して同じことを繰り返すとd1 : P1 → ker(ε) → 0を作れます. ker(ε)はP0の部分群なので Im(d0) = ker(ε). この操作を繰り返すことで

  ... → Pn → Pn-1 → ... → P0 → P → 0
            dn             d1    ε

という完全列を作ることができます.

より一般にR加群Pに対して, (自由加群とは限らない)射影加群の列{Pn}とその間の準同型{dn}が存在し,

  ... → Pn → Pn-1 → ... → P0 → P → 0
            dn                   ε

が完全列であるとき, (Pn, dn, ε)をPの射影分解といいます. 自由加群は射影加群なので上記の操作により射影分解は常に存在します.

Rが単項イデアル整域(PID)と呼ばれる都合のよい環であるとき(たとえばZやZ/pZ), 自由加群の部分加群はまた自由加群, つまり射影加群になることが知られています.
# RがPIDのとき, 自由であることと射影的であることは同値です.

つまり, 上記のker(ε)が射影的になり, そこで止めることができます. 言いなおすとRがPIDなら任意のR加群Pについて0 → P1 → P0 → P → 0という射影分解が存在します. とりえあず, これを事実として進めましょう.

コホモロジー
R加群の列とその間の順同型写像の組 X = {Xn, dn}がdn+1・dn = 0を満たすとき, Xを双対鎖複体(dual chain complex)といいます.
0 →  ... → X(n+1) → Xn → X(n-1) →  ...
 d(-1) = 0       d(n+1)  dn      d(n-1)

このとき, Zn(X) = Ker(dn), Bn(X) = Im(dn+1)として Hn(X) = Zn(X) / Bn(X)をXのn次コホモロジーといいます.

二つの双対鎖複体 X = {Xn, dn}, Y = {Yn, en}とその間の順同型写像の組 fn : Xn → Yn が {dn} と可換なとき f = {fn} を鎖順同型といいます.

            d(n+1)   dn      d(n-1)
... → X(n+1) →  Xn → X(n-1) →  ...
          |       |      |
    f(n+1)|     fn|      |f(n-1)
          ↓       ↓      ↓
 ... → Y(n+1) →  Yn → Y(n-1) →  ...
             e(n+1)  en      e(n-1)

Zn(X) = Ker(dn) ∋ xについて可換性の条件から, en(fn(x)) = fn-1(dn(x)) = 0 となり fn(x) ∈ Ker(en) = Zn(Y). つまりfn(Zn(X)) ⊆ Zn(Y).
またXn+1 ∋ xについて fn(dn+1(x)) = en+1(fn+1(x)). つまりfn(Bn(X)) ⊆ Bn(Y). よって, H(fn) : Hn(X) → Hn(Y)を自然に定義できます.

ホモトピー
X = {Xn, dn}, Y = {Yn, en}を双対鎖複体, f = {fn}, g = {gn}をXからYへの鎖順同型とします. fとgが鎖ホモトープであるとは, あるR順同型写像 s = {sn : Xn → Yn+1}があって, fn - gn = sn+1・dn + en-1・snとなるものをいう(s-1 = 0).

これはちょっと面倒で図を省略します. fとgの差が上から下への矢印が右行って左斜め下に行くものと左斜めに行って右にいくものとの和でかけるということです.

鎖ホモトープという条件は同値関係~になります. Zn(X) ∋ xに対して fn(x) - gn(x) = sn+1・dn + en-1・sn(x) = en-1・sn(x) ∈ Bn(Y). よって H(fn)(x) = H(gn)(x). つまり f~gならH(f) = H(g)ということです.

双対鎖複体 X, Yに対して鎖順同型 f : X → Y, g : Y → Xが存在して g・f ~ 1X, f・g ~ 1Y なったとします(1Xなどは恒等写像). この状態をXとYは同じホモトピー型を持つといいます. するとH(g)・H(f) = H(g・f) = H(1X) = 1, H(f)・H(g) = 1となり, Hn(X)とHn(Y)は同型となります.

射影分解の一意性
射影分解はある種の一意性を持ちます. PとP'の射影分解を(Pn, dn, ε), (P'n, d'n, ε')とします.
          dn               d1     ε
 .. → Pn  → Pn-1  → ... → P0  → P → 0
       |      |            |      |
       |φn   |φn-1       |φ0   |φ
       ↓      ↓            ↓      ↓
 .. → P'n → P'n-1 → ... → P'0 → P'→ 0
          d'n             d'1     ε'

Hom(P, P') ∋ φを一つとります. ε' : P'0 → P → 0という全射とφ・ε:P0 → Pという写像を考えると, P'0の射影性から, あるφ0 : P0 → P'0 で φ・ε = ε'・φ0を満たすものが存在します.
するとε'・φ0・d1 = φ・ε・d1 = φ・0 = 0より, Im(φ0・d1) ⊆ Ker(ε') = Im(d'1). よってd'1 : P'1 → Im(d'1) → 0という全射とφ0・d1 : P1 → Im(d'1)という写像に対して, P'1の射影性からφ1 : P1 → P'1で d'1・φ1 = φ0・d1であるものが存在します. これを繰り返すことで上記図式を可換にする鎖写像{φn}を構成できます. {φn}をφの持ち上げと言うことにしましょう.

n}はホモトピーを除いて一意です. つまり{φn}, {φ'n}をφの持ち上げとします.

gn = φn - φ'nとしましょう. これはφ-φ=0写像の持ち上げとなっています. s-1 = 0として, s0 : P0 → P'1を構成します.

          dn              d1    ε
 .. → Pn  → ...  → P1  → P0  → P → 0
       |            |      |    |
       |gn          |g1    |g0  |0
       ↓            ↓      ↓    ↓
 .. → P'n →  ... → P'1→ P'0 →  P' → 0
          d'n            d'1    ε'

d'0・g0 = d0・0 = 0よりIm(g0) ⊆ Ker(d'0) = Im(d'1). よって全射 d'1 : P'1 → Im(d'1)とg0 : P0 → Im(d'1)に対してP'1の射影性から, s0 : P0 → P'1で g0 = d'1・s0であるものが存在します.

次にd'1・(g1 - s0・d1) = d'sub(1)・g1 - g0・d1 = 0より g1 - s0・d1 ⊆ Ker(d'1) = Im(d'2). P'2の射影性からs1 : P1 → P'2で s1・d'2 = g1 - s0・d1であるものが存在します. つまりg1 = s1・d'2 + s0・d1. これを繰り返すことで{sn}を構成できます. よって{φn}~{φ'n}. ホモトピーの節からH(φn) = H(φ'n)となり, H(φ*)はφの持ち上げかたによらないことが分かります.

長い準備の前半が終わりました.

Ext
漸くExtの定義にたどり着きました.
R加群P, Qに対してExtを次のように定義します. Pの射影分解(Pn, dn, ε)
 .. → Pn → Pn-1 → ... → P0 → P → 0
          dn                   ε

を一つとり, d0 = 0として X = {Hom(Pn, Q), dn*}を考えます(Pを取り除きます).
この鎖複体に対して Hom(, Q)を適用すると 0 → Hom(P0, Q) → Hom(P1, Q) → ... という双対複体を構成でき, このコホモロジーをExtとします. つまり
Extn(P, Q) := Hn(Hom(P*, Q))
で定義します.

ε* : Hom(P, Q) → Hom(P0, Q)は単射なので Ext0(P, Q) = Ker(d0*) = Im(ε*) = Hom(P, Q) が成り立ちます.

RがPIDのとき, 射影加群と射影分解の最後に書いたように

 0 → P1 → P0 → P → 0
         d    ε

という射影分解に対してExtを考えることができます. そうすると

 0 → Hom(P0, Q) → Hom(P1, Q) → 0
                d*            0*

という鎖複体なので Ext1(P, Q) = Ker(0*) / Im(d*) = Hom(P1, Q) / Im(d*) = Coker(d*)
Extn(P, Q) = 0 for n ≧ 2 となります.

ここでSilvermanの論文に出てくるExtの表現との関係を見てみましょう. SilvermanのところではExt(P, Q)の元fはf : P × P → Qでf(x, y) - f(x, y + z) + f(x + y, z) - f(y, z) = 0を満たすもの. ただしf~f' ⇔ ある g : P → Qで(f - f')(x, y) = g(x + y) - g(x) - g(y)でした. -(***)

きちんとした定義のExt1(P, Q)の元がそのように表現できること示します. εが全射なのでσ : P → P0 でε(σ(p)) = p となるσをとることが出来ます. このσは準同型である必要はありません.

x, y ∈ Pに対してε(σ(x+y) - σ(x) - σ(y)) = (εσ)(x+y) - (εσ)(x) - (εσ)(y) = 0. つまり σ(x+y) - σ(x) - σ(y) ∈ Ker(ε) = Im(d). よってz ∈ P1の元でd(z) = σ(x+y) - σ(x) - σ(y) となるものが唯一定まります. この対応をλ(x,y) = zとかくことにします. λ : P × P → P1. d(λ(x, y)) = σ(x+y) - σ(x) - σ(y).

Ext1(P, Q)の元の代表 f ∈ Hom(P1, Q)をとってきて, このλとの合成f~ = f・λを考えると f~ : P × P → Q でf(x, y) - f(x, y + z) + f(x + y, z) - f(y, z) = 0となることがすぐわかります.

また, Im(d*) の元はg : P0 → Qを用いてg・d:P1 → Qで表せます. よって, (g・d)~(x, y) = g・d(λ(x, y)) = g(σ(x+y) - σ(x) - σ(y)).
つまりg' = g・σとおくと(g・d)~(x, y) = g'(x+y) - g'(x) = g'(y)となります.

というわけでExt1(P, Q)の元を自然に(***)の形とみなすことができました(もちろん全射にはならない).

Extの完全列
RがPIDのとき, Extn = 0 (n ≧ 2)なのでExt1をExtと略記して話を進めます.
定理
RをPIDとする.
       ψ   φ
0 → M → N → P → 0 がR加群の完全列のとき

0 → Hom(P, Q) → Hom(N, Q) → Hom(M, Q) → Ext(P, Q) → Ext(N, Q) → Ext(M, Q) → 0

は完全列

(注意)Rが一般の環のときは最後が0ではなくずっとExtの列が続きます.

証明しましょう. またしばらくかかるので位相空間などなどまで飛ばして下さい. ここからしばらくRがPIDであることを仮定します. この仮定は殆どのところで不要, あるいは数学的帰納法を用いて証明できます. 図式が煩雑になるため省略します.

補題1
RをPIDとする. MとPの射影分解をそれぞれ({M', M''}, d'', ε''), ({P', P''}, d, ε)とします. このとき0 → M' → N' → P' → 0が完全になるようなNの射影分解({N', N''}, d', ε')が存在し, 下記図式が全て可換になるようにできます.

(IEだと絵がずれるなあ. テキストで見てくださいm(__)m).

     0       0        0
     ↓     ↓       ↓
0 → M''─→ M' ─→  M → 0
     | d'' |  ε'' |
     |ψ'' |ψ'    |ψ
     ↓     ↓       ↓
0 → N''─→ N' ─→  N → 0
     |  d' |  ε'  |
     |φ'' |φ'    |φ
     ↓     ↓       ↓
0 → P''─→ P' ─→  P → 0
     ↓  d  ↓  ε   ↓
     0       0        0

1. (N', ε'の定義) N' := M' + P'とします. さらにπ : N' = M' + P' ∋ (m', p') → m' ∈ M'. ι : P' ∋ p' → (0, p') ∈ N'とします.
すると0 → M' → N' → P' → 0 は完全. π・ψ' = idM'. φ'・ι = idP'.

全射 φ : N → P とε : P' → PとP'の射影性からあるf : P' → Nでε = φ・fとなるものが存在. ε' : N' → Nをε' = ψ・ε''・π + f・φ'とします.

2. (可換性) ε'・ψ' = ψ・ε''・π・ψ' + f・φ'・ψ' = ψ・ε''.
φ・ε' = φ・ψ・ε''・π + φ・f・φ' = ε・φ'.

3. (ε'の全射性) n ∈ Nをとる. εが全射なので∃p' ∈ P' s.t. ε(p') = φ(n). φ(n - ε'(ι(p'))) = ε(p') - ε・φ'・ι(p') = ε(p') - ε(p') = 0. よって∃ m ∈ M s.t. ψ(m) = n - ε'(ι(p')). ε''が全射なので∃m' ∈ M' s.t. ε''(m') = m.
よってε'(ψ'(m') + ι(p')) = ψ・ε''・πψ'(m') + f・φ'ψ'(m') + ε'(ι(p')) = ψ・ε''(m') + ε'(ι(p')) = ψ(m) + ε'(ι(p')) = n.

4. (M, N, P)の代わりに今構成した(M', N', P')の部分加群(Ker(ε''), Ker(ε'), Ker(ε))を置き換えることで N''を構成できます.

5. d' : N'' → Ker(ε')が単射であること. d'(n'') = 0とする. d(φ''(n'')) = φ'(d'(n'')) = 0. dは単射なのでφ''(n'') = 0. よって∃m'' ∈ M'' s.t. ψ''(m'') = n''. ψ'・d''(m'') = d'・ψ''(m'') = d'(n'') = 0. ψ', d''が単射なのでm'' = 0. よってn'' = 0. RがPIDでない場合は左の0 →が無くて必要なだけ繰り返して延ばします.

補題2
Hom(, Q)の右が完全になるときがあります.

(RはPIDでなくてよい)
R加群M, N, Pに対する完全列があり, τ・i = idMとすると, R加群Qに対して

       i    p
0 → M → N → P → 0
       ←
       τ

=> 0 → Hom(P, Q) → Hom(N, Q) → Hom(M, Q) → 0 (完全)

上記のようなτがあるとき分解型完全列といいます. そうでないときも最後の → 0以外は成り立つのでそこを示します.

といっても簡単で, Hom(M, Q) ∋ fについて, f・τ ∈ Hom(N, Q)を考えるとi*(f・τ) = f・τ・i = f.

ヘビの補題
(RはPIDでなくてよい)
次の完全列があったときに少し長い完全列を作れます. X, Y, Z, X', Y', Z'がR加群で
         0
     d   ↓
  X ─→ X'
  |     |
  |f    |g
  ↓ d'  ↓
  Y ─→ Y'
  |     |
  |f'   |g'
  ↓ d'' ↓
  Z ─→ Z'
  ↓
  0

があったときに, Ker, Cokerを下記のように増やせてかつker(d'') → Coker(d)をつなげられます.

        0                  0
        ↓     i        d  ↓   p
  0 → Ker(d)  ─→ X ─→ X' ─→ Coker(d) → 0
        |          |     |        |
        |h         |f    |g       |k
        ↓     i'   ↓ d'  ↓   p'   ↓
  0 → Ker(d') ─→ Y ─→ Y'─→ Coker(d') → 0
        |          |     |        |
        |h'        |f'   |g'      |k'
        ↓     i''  ↓ d'' ↓  p''   ↓
  0 → Ker(d'')─→ Z ─→ Z'─→ Coker(d'') → 0
                    ↓
                    0

0 → Ker(d) → Ker(d') → Ker(d'') → Coker(d) → Coker(d') → Coker(d'') → 0 (完全)
                                   δ

1. i, i', i'', p, p', p''の構成
ker(d)はXの部分加群なので標準的なinclusionです. 他も同様です. Coker(d) = X' / Im(d)なのでpは標準的なprojectionです.

2. hの構成
ker(d) ∋ xについてd'・f・i(x) = g・d(x) = 0よりf・i(x) ∈ ker(d'). つまりfをker(d)に制限した写像hはh : ker(d) → ker(d')になります. h'も同様です.

3. δ : Ker(d'') → Coker(d)の構成
δを連結写像と言ったりします. ker(d'') ∋ xに対して f'が全射なので∃y ∈ Y s.t. f'(y) = i''(x). g'(d'(y)) = d''(f'(y)) = d''(i''(x)) = 0よりd'(y) ∈ ker(g') = Im(g). よってx' ∈ X' で g(x') = d'(y) となるものがただ一つ存在します. δ(x) := p(x')としましょう.
well-definedを確認します. 別のy~ ∈ Y s.t. f'(y~) = i''(x)があったとすると, f'(y~ - y) = 0. よって∃x ∈ X s.t. f(x) = y~ - y. x'~ ∈ X' でg(x'~) = d'(y~). よってg(x'~ - x') = d'(y~ - y) = d'・f(x) = g・d(x). gが単射なのでx'~ - x' = d(x). よってp(x'~) = p(x')となりδはwell-definedになります. 他の完全性の部分は略.

定理の証明
準備が整いました. さてPIDな環Rの完全列 0 → M → N → P → 0があったときに, 補題1から完全列を作り, それに対してHom(, Q)を作用させます. 真ん中の縦の列は分解型完全列なので補題2を使うと次の図式がでます.
     0              0
     ↓             ↓
  Hom(P', Q) → Hom(P'', Q)
     ↓             ↓
  Hom(N', Q) → Hom(N'', Q)
     ↓             ↓
  Hom(M', Q) → Hom(M'', Q)
     ↓             ↓
     0              0

これに対してヘビの補題を適用することでkerとCokerの完全列ができます. ところでker(d*)はHom(P, Q), CokerはExtなので, 結局

0 → Hom(P, Q) → Hom(N, Q) → Hom(M, Q) → Ext(P, Q) → Ext(N, Q) → Ext(M, Q) → 0

が完全となりました. 大変だった.

位相空間
ホモロジー代数の話はひとまずそれぐらいにして, 次に位相空間まわりの最低限の定義を復習しておきます. またもや無味乾燥な定義の列...

実数や複素数体上の開集合は直感的ですが, 距離の定義できない空間でも遠い, 近いという概念を考えたいときに抽象的な位相空間が定義されました.

・集合Xとその部分集合の族Yの組(X, Y)が位相空間であるとは
1) X ∈ Y, Φ(空集合のつもり) ∈ Y.
2) U1, U2 ∈ YについてU1 ∩ U2 ∈ Y.
3) 任意個のUλ ∈ Yについて∪Uλ ∈ Y.
を満たすものをいい, Yの元をXの開集合といいます. 開集合の補集合が閉集合です.

言葉で言うと, 全体と空集合はopen, 有限個のopen setの交わりはopen, 無限個でもいい任意個のopen setの併合はopenということです.

Y = {X, Φ}と開集合が2個しかないときでもXは位相空間になります. 逆にYをX全ての部分集合としたときもXは位相空間になります.
Rの普通の開集合は開区間(a, b)を組み合わせてできたものです. 無限個の開区間(1-1/n,1+1/n)の交わりは ∩(1-1/n,1+1/n) = {1}となり開集合ではありません. 上記定義の2)が有限個なのはそれを反映しています. 代数多様体で定義されるZariski位相はそれよりもずっと開集合が少ない感じです.

・位相空間X, Yがあったときに関数 f : X → Yが連続であるとは Yの任意の開集合Uの引き戻しf-1(U)がXの開集合であること, でした.
この定義は抽象的ですが, Xが実数や複素数体上の関数の素朴な連続の定義に一致します.

・位相空間Xの部分集合Kがコンパクトであるとは, Kの任意の開被覆 ∪Uλ ⊇ Kがあったときに, そこから有限個取り出して覆えることです. ∪n Uλ_i ⊇ K.

Xが実数などの距離空間のときはコンパクトは有界閉集合に一致します.

位相空間の連続写像 f : X → Y とコンパクト K ⊆ X があったときf(K)はコンパクトです.

なぜならf(K)の開被覆があったとすると, それをfで引き戻せばKの開被覆になり, Kはコンパクトなので有限個取れるからです.

・XがHausdorffであるとはXの任意の異なる2点x, yに対してU ∋ x, V ∋ yとなる開集合U, VがあってU ∩ V = Φとできることです. 要はどんなに近い2点であってもそれを分ける小さな開集合があるということです.

XがHausdorffであることはΔ := { (x,x) | x ∈ X } が X × X の中でclosedであることと同値です. Zariski位相はHausdorffではないのですが, Hausdorff的な条件が必要なときに対角写像が"閉"であるという性質を使ってその代わりにすることがあります.

・f : X → Y が同相(homeomorphic)写像であるとはfが連続で, 逆写像f-1が存在してf-1も連続なことです. 位相空間として同一視できるということです.

複素多様体
複素多様体とは大雑把にいうと局所的にCnの開集合と思えて, それの張り合わせたものであり, つなぎ目も滑らかになっているものです.

複素1変数関数fがある開集合Dの各点で微分可能なときDで正則(holomorphic)といいます. それは各点zの近傍(zを含む開集合)でTayler展開できることと同値です. C上正則で有界な関数は定数関数しかありません(Liouvilleの定理). Cauchyの積分定理から示せます.

・Hausdorff空間Xがn次元複素多様体であるとはXの開被覆 X = ∪Uλと各開被覆Uλに対してCnの開集合への同相写像 φλ : Uλ → φλ(Uλ) ⊆ Cn があって Uλ ∩ Uμ ≠ Φのときφμ・φλ-1 : φλ(Uλ ∩ Uμ) → φμ(Uλ ∩ Uμ) が正則関数, かつ逆写像も正則関数であるものです.

言葉にするとややこしいですが, 図を書いてみると張り合わせの感覚が分かると思います. (Uλ, φλ)を局所座標といいます.

X上の関数fが正則(holomorphic)であるとは, 局所座標を通じて作ったf・φλ-1λ(Uλ) → Cが正則なときにいいます.

射影空間
複素多様体の一例で重要な概念である射影空間を定義します.

Euclid空間Cn+1の2点x, yに同値関係を「x~y ⇔ あるλ ∈ C*があってx = λy」でいれます. ベクトルの向きが同じ点を同一視するということです. 同値関係で割った空間を Pn := Cn+1/~ と書きn次射影空間といいます. Pnは複素多様体になります. x = (x0, ..., xn)の同値類を(x0:...xn)と書くことにします.

P1で考えてみましょう. U = {(x:y)∈P1 | y ≠ 0}, φ:U → C をφ(x:y) = x/yとすると φはwell-definedで1対1の対応になります. V = {(x:y)∈P1 | x ≠ 0}, ψ:V → C をψ(x:y) = y/xとするとこれも1対1の対応がつきます. P1 = U ∪ Vであり, U ∩ V上ではC*と1対1の対応がつくことも分かって局所座標になります. P - U = {(x:y)∈P1 | y = 0}は = {(1:0)}と1点になります. これを∞とかくことにするとP1 = C ∪ {∞}となります. Riemann球面といいます.

複素多様体XからP1への正則な写像をX上の有理型関数といいます. X上の有理型関数全体をM(X)と書くことにします.

アーベル多様体
アーベル多様体を定義します. と言っても大雑把なところでお茶を濁します. とりあえずC(複素数体)上の話ですすめます.

Vをg次元複素ベクトル空間, Λを2g次元Zベクトル空間としてX := V/Λをg次元複素トーラスといいます. 複素トーラスには自然に足し算の構造が入ります.

Vの基底をe1, ..., eg, Λの基底をλ1, ..., λ2gとして, λi = λ1i e1 + ... λgi eg (λji ∈ C) とかいたときg行2g列の行列Π = (λji) を周期行列といいます.

複素トーラスXの周期行列Πに対してある非退化交代行列 A ∈ M2g(Z) (A = -tA)が存在して
1) ΠA^-1 tΠ = 0
2) i ΠA^-1 tΠ~ > 0 (正定置 := 行列の固有値が全て正)
が成り立つときXを複素アーベル多様体といいます.

1次元のときは複素トーラスは必ずアーベル多様体になります. なぜならΛの基底を1とλ(実数でない)として, 非退化な交代行列Aをについて逆行列A-1

( 0 b)
(-b 0)

とおくと1)の条件は (1 λ) * t(bλ - b) = bλ - bλ = 0.
2)の条件は i(1 λ) * t(bλ~ -b) 2b Im(λ) > 0となり常に成り立つようにできるからです.

楕円曲線
1次元複素トーラス(=1次元アーベル多様体)を楕円曲線といいます.

π : C → X := C / Λをπ(x) := x mod Λとします. 単にΛだけずれた値を同一視するということです.

楕円曲線Xに位相を入れましょう. 「U ⊆ Xが open ⇔ π-1(U)がCの中で open」と定義します. 更にπ : C → Xは連続になります(ほぼ自明).

XはHausdorffです. まあこれも容易でしょう.

K:={a + bλ ∈ C|a, b ∈ [0, 1]}とするとKはCの中でコンパクト(有界閉集合)で, πが連続ですからその像であるX = π(K)はコンパクトです.

Cの中の開集合Uを十分小さくとるとΛずれた値が入らないようにできます. その範囲内では π|U : U → π(U) ⊆ X は1対1の対応がつき逆写像も連続である(homeomoprhic)ことがわかります. つまりXは局所的にはCの開集合と同じと思えるということです. 張り合わせ部分も問題なくできて, これによりXはコンパクト1次元複素多様体になります.

また加算や逆元(マイナス操作)も正則にできることがわかります.

楕円曲線上X上の関数はC上の関数でf(x + a + bλ) = f(x), a, b ∈ Z, Λ = <1, λ>を満たす関数とみなせます. fをC上の二重周期関数と呼んだりします.

mを自然数とし, X上のm倍写像 m : X ∋ x → mx ∈ Xを考えるとm(x + y) = mx + myなので準同型写像です. Ker(m)はm倍して0になる点ですが, Λ = Z + ZλなのでKer(m) = { a/m + b/mλ ∈ X | a, b ∈ Z} = (Z/mZ)2となります. またmは全射です.

Weilペアリング
基本的な用語がだいたい終わったので(ふぅ), 漸く本題のペアリングの話に戻れます.

mを自然数とし, GmをCの乗法群C* := C - {0}とします. Xを楕円曲線, X[m] := { x ∈ X | mx = 0 }とします. すると次の完全列をえられます.

               m
0 → X[m] → X → X → 0

m : X → Xはm倍写像です. GmへのHomを考えることでExtの完全列を使って次の完全列がえられます.
Gmが乗法群なので行き先は + ではなく * で表現することに注意.

 0 → Hom(X, Gm) → Hom(X, Gm) → Hom(X[m], Gm) → Ext(X, Gm) → Ext(X, Gm) → Ext(X[m], Gm)

Hom(X, Gm)はXからGmへの正則で準同型の写像全体です. f ∈ Hom(X, Gm)をとると Xはコンパクトなのでf(X) ⊆ Gmコンパクト, つまりC内で有界. fはC上の周期関数とみなせます. するとC上の有界な正則関数は定数しかないのでf = constとなります. 準同型なのでf(0) = const = 1. よってHom(X, Gm) = { 0 }となります. 上記長完全列のうち必要な部分を抜き出すと

                    δ            m*
 0 → Hom(X[m], Gm) → Ext(X, Gm) → Ext(X, Gm)

となります. f ∈ Hom(X[m], Gm), x ∈ X[m] について 1 = f(0) = f(mx) = f(x)m. だから f(x) ∈ μm = { x ∈ C | xm = 1 }. つまりHom(X[m], Gm) = Hom(X[m], μm).

X^ := Ext(X, Gm)と定義し, これをXの双対楕円曲線とよぶことにすると上の列は

                     δ    m*
 0 → Hom(X[m], μm) → X^ → X^

となります. Im(δ) = Ker(m*) = { x ∈ X^ | mx = 0 } = X^[m]ですから準同型定理により
Hom(X[m], μm) = X^[m]という同型をえられます.

するとx ∈ X[m], f ∈X^[m] = Hom(X[m], μm)に対してその値 f(x) ∈ μmを取るという自然な写像がえられます.

em : X[m] × X^[m] → μm

これをWeilペアリングと呼びます. Xを楕円曲線としましたが, アーベル多様体でも同様に進められます. 作り方をおさらいすれば分かるように楕円曲線Xとm倍写像から基底を使うことなく自然にペアリングを定義できました. これが基底によらない抽象的な定義です.

Pic0
さて, X^の正体に入る前に, またしばらく準備が必要です. まず因子の定義をしましょう.

Xを楕円曲線としたとき, Xの点の形式的有限和 D = Σan (Pn)をWeil因子といい, その次数を deg D = Σanで定義します. Xの因子全体の集合をDiv(X)と書きます. 因子の和を D + D' = Σan (Pn) + Σa'n (P'n)とすることでDiv(X)はAbel群になります. Div0(X) = { D ∈ Div(X) | deg D = 0}とするとDiv0(X)はDiv(X)の部分群です.

順序も入れておきましょう. 二つの因子D, DについてD ≧ D'であるとはD - D' = Σan (Pn)についてan ≧ 0 for all nとします.

X上の有理型関数f(≠0, ∞) ∈ M(X)に対して, f(z) = 0となるzを零点(zero), f(z) = ∞となる点を極(pole)といいます. fをzの近傍の局所座標でLaurent展開して f(z) = Σi=s ai ziとなったとき, zがzeroならs > 0, zがpoleなら s < 0となります. ordz f = sと書き, fのzの位数(order)といいます.

div(f) := ΣordP(f) (P)と定義すると, fのzeroやpoleや有限個しかありません. なぜなら無限個あったとするとXはコンパクトなので集積点ができて, 一致の定理からそれは定数関数で0か∞になってしまうからです. よってdiv(f)はXの因子となります.

またfの重複度を込めたzeroの数とpoleの数は同じである(fが定める関数体間M(P1)→M(X)の拡大次数に等しい)ことが示せて, 結果deg div(f) = 0となります.

二つの因子D, D'が線型同値であるとは, あるfがあってD = D' + div(f)となるときにいいます.

f, gを0や∞でない有理型関数とするとdiv(fg) = div(f) + div(g), div(f-1) = -div(f)であることは容易にわかります. よって

div : M(X) → Div0(X) は準同型写像になり, Pic0(X) := Div0(X) /~もアーベル群になります. PicはPicardの略です.

とりあえず, Pic0(X)を定義しましたが, これだけでは全然意味がわかりませんね.

Riemann-Rochの定理
因子がどう大事なのかを見るために少し寄り道します.

天下り的ですがもう少しだけ定義を続けます. 因子Dに対してL(D) := { f | div(f) ≧ -D} ∪ {0}とします. L(D)はベクトル空間になります. なぜなら二つの関数f, gに対してf + gはzeroは増えることはあってもpoleは打ち消しあう可能性しかないからです.

L(D)の次元をl(D)としましょう. l(D) := dimC L(D). DとD'が線型同値なとき(D = D' + div(f)), L(D')の元にfをかけるとL(D)の元になるのでL(D)とL(D')はベクトル空間として同型になります. 特にl(D) = l(D').

X上の正則な関数は定数関数しかなかったのでL(0) = Cとなります. 一般的にL(D)は有限次元ベクトル空間になるのですが, もっと精密に

楕円曲線に対する一番簡単なRiemann-Rochの定理(の一部):
deg D > 0のときl(D) = deg D.

が成り立ちます. Riemann-Rochは楕円曲線だけでなく, 1次元の連結なコンパクトな複素多様体(=Riemann面)などでも成り立つ定理です.

Dが一点Pからなる因子 (P) のとき, l((P)) = 1です. 定数関数は L((P)) の元ですので, L((P)) は定数関数しかないということです. これはC上の二重周期関数で一位のpoleを持つものが存在しないことを意味しています.

この定理を使って楕円曲線を射影空間の部分多様体として実現してみましょう.

まず楕円曲線の点Pを固定してD = n(P)という因子を考えてみると, Riemann-Rochの定理からn > 0のときl(n(P)) = nとなります.

L(2(P))は2次元で定数関数1以外の元fをとるとL(2(P)) = <1, f>となります.

L(3(P))は3次元でL(3(P)) = <1, f, g>としましょう. L(4(P))を考えてみます. fは点Pで2位のpoleだったのでf2は点Pで4位のpoleを持ちます. つまりL(4(P)) = <1, f, g, f2>.

L(5(P))はどうでしょう. 点Pでfが2位, gが3位のpoleを持つのでfgは5位のpoleを持ちます. つまりL(5(P)) = <1, f, g, f2, fg>.

もう一つ. L(6(P))を考えるとf3, g2のどちらも6位のpoleを持ちます. deg L(6(P)) = 6ですから, 7個の基底の候補1, f, g, f2, fg, f3, g2は線型従属になります.

つまりあるa1, ..., a7(全てが0ではない)が存在して
a1 + a2 f + a3 g + a4 f2 + a5 fg + a6 f3 + a7 g2 = 0.

3次方程式の2次の項を消す要領で適当にアフィン変換を施してfとgを取り直すと
g2 = f3 + a f + bと式変形できます. ---(*4) これはいわゆる普通の楕円曲線の定義方程式です.

φ:X ∋ x → (f(x):g(x):1) ∈ P2としましょう.

実はφは正則で1対1, φの像φ(X)はP2の中でコンパクトな部分多様体になることがわかります. そうすると1次元複素トーラスであったXは(*4)という式で定義された多様体と同じものとみなせます.

つまり, 楕円曲線は(fとgをxとyという名前に置き換えると)y2 = x3 + ax + bという形しかないということがわかります. 何故, 暗号の入門書などで唐突にこんな方程式が現れ, それしか考えないのかというのは, (1次元の範囲では)そういうものしか無かったから, なのでした.

一般に何か分からないXを調べるとき, Xを直接調べるのではなくX上の関数全体を考えるという方法があります. たとえばXがベクトル空間のときはHomC(X, C)はXに同型でした. 楕円曲線のときは正則な関数は定数関数しかなかったので, poleを持ってもよい関数を少しずつ増やすことで, それから作られるPnへの写像を考えてみたのです. 実は楕円曲線でなくもっと一般のコンパクトRiemann面に対しても同様にPnの部分多様体として実現できます.

とりあえず, 因子とそれから作られるベクトル空間に関する次元の定理があるといろいろできるというのが少しは伝わったでしょうか.

Pic0とX
実は楕円曲線 X に対して Pic0(X) は X 自身になることが示せます.

deg D = 0とします. Oを楕円曲線の単位元として, D + (0)という因子を考えるとdeg (D+(O)) = 1. Riemann-Rochの定理よりl(D + (O)) = 1. よってあるf ∈ M(X)があって D' := div(f) + D + (O) ≧ 0. deg D' = 1で, 全ての点で0以上なので結局D'は1点PDからなる因子 (PD)であることが分かります. するとD = (PD) - div(f) - (O) ~ (PD) - (O).

このPDはDから一意に定まります. なぜなら(P) - (O) ~ D ~ (P') - (O)とすると(P)~(P'). つまりあるf ∈ M(X)があってdiv(f) = (P) - (P'). これはfがPで1位のzero, P'で1位のpoleを持つということです. そうするとX ∋ x → (f(x):1) ∈ P1という写像は全単射正則写像になってXがP1になってしまいます. というわけで

φ : Pic0(X) ∋ D → PD ∈ X

という写像を構成できました. φ(D + D') = φ(D) + φ(D')は容易に示せます. PDはもっと具体的に構成法を示せます.

P, Q ∈ Xとし, X上の点加算としてR = P + Qとします. f(x,y) = ax+by+cをP, Qを通る直線の式とすると f(P) = f(Q) = f(-R) = 0. よってdiv(f) = (P) + (Q) + (-R) - 3(O). g(x,y)=dx+eをR, Oを通る直線の式とするとdiv(g) = (R) + (-R) - 2(O). よって
div(f/g) = (P) + (Q) - (R) - (O). つまり((P) - (O)) + ((Q) - (O)) ~ (P+Q) - (O).

一般にD = Σan (P) ∈ Div0(X)に対し点加算としてのPD = Σan PをとるとD ~ (PD) - (O)となることが分かります.

さて逆写像は φ-1(P) = (P) - (O) となります. よって

X ∋ P → (P) - (O) ∈ Pic0(X)は同型となります.

Pic0とExt
X^の話に戻ります.

T ∈ Xを一つとったとき, τT : X ∋ P → P + T ∈ XというTだけ足す関数を考えます. D = (T) - (O) ∈ Pic0(X) = Xをとり, τP*D = (T - P) - (-P)とします.

τR*D - D = (T - P) - (-P) - (T) + (O)を考えると点の加算として T - P + P - T = O なので Riemann-Rochの定理からあるfT, R ∈ M(X)があって
τR*D - D = div(fT, R).
このfは定数倍を除いてuniqueです.

φ : Pic0(X) → Ext(X, Gm) を φ(T)(P, Q) = fT, P(Q) / fT, P(O)
で定義します. 定数倍してfT, P(O) = 1としてもよいです.
T = OのときはfD, R = 1とします.

φ(T)(P, Q)がExtの元であることを確認します.

div(fT, P + Q) = (T - P - Q) - (-P - Q) - (T) + (O)
= (T - P - Q) - (-P - Q) - (T - Q) + (-Q) + (T - Q) - (T) - (-Q) + (O)
= div(τQ* fP) + div(fQ)

よって fT, P + Q(R) = fT, P(R+Q) fQ(R).

φ(T)(P, Q) / φ(T)(P, Q + R) × φ(T)(P + Q, R) / φ(T)(Q, R)
= fP(Q) / fP(O) × fQ(O) / fQ(R) × fP + Q(R) / fP + Q(O) × fP(O) / fP(Q + R)
= 1

次に単射を確認します. Pic0(X) ∋ D をとり, div(fT, P) = τP*D - D とします. ある g ∈ M(X) があって φ(T)(P, Q) = fT, P(Q) = g(P + Q) / (g(P) g(Q)) とします. g(0) = 1としておきましょう.

h(Q) := ((τP*g)/g)(Q) とすると, h(Q) = g(P + Q) / (g(P) g(Q)) = φ(T)(P, Q).
τP*D - D = τP* div(g) - div(g).
よってτP*(D - div(g)) = D - div(g).

任意の P ∈ X について τPによる引き戻しが変わらないということはD - div(g) = 0. つまりD = div(g) ~ 0 となり単射となりました. 全射と準同型も同様に(できると思う… 疲れた…).

長々とやってましたが, X^ = Ext(X, Gm) と Pic0(X) と X が同一視できることにより, Weilペアリングのそれが

em : X[m] × X[m] → μm

となりました. これで一山超えました.

1st:2010/12/24, last update:2016/08/29

御意見は光成滋生<herumi@nifty.com>までお願いします