Period-Mathematics

巡回多項式を代数的に解く

巡回多項式とは簡単に言えば一つの根をもって他の根をその多項式で表せるような特別な多項式のことである。これについては
period-mathematics.hatenablog.com
で詳しく取り上げているが、そこの主定理によると既約多項式に対して、それが巡回多項式であることとその*1ガロア群が巡回群であることが同値なのであった。本稿はこの記事の証明パートを除いた部分は既知とした上で書いている。そしてここでも断りなくページ数などを書いたら石井俊明『ガロア理論の頂を踏む』からの引用を表していることにする。

さて、ここ取り上げるのは
period-mathematics.hatenablog.com
で取り上げたPDFのもう一つの主題、巡回多項式の代数的解法である。本稿をもってそこのPDFの内容は全て解説できたことになる。本稿ではそこの記事の内容も既知として書いていることをあらかじめ注意しておく。またPDFと記号を変えたりしているのでそこもあらかじめご了承いただきたい。

以下\zeta_nで1の原始n乗根を表すものとし、係数体は既にこれを加えた\mathbb{Q}(\zeta_n)で考えるものとする(解の巡回の記事の\mathbb{Q}を全て\mathbb{Q}(\zeta_n)で置き換えても全く同じ議論が成立することに注意されたい*2。しかしそうした場合例えば、本稿の例は該当しないが、巡回関数の係数に\zeta_nが出てくる可能性もある)。


解法の解説

PDFで取り上げられている巡回多項式の例*3f(x)=x^5+x^4-4x^3-3x^2+3x+1 を考えていこう。これを代数的に解きたいとする。以下、根x=\alphaを一つ固定する。まずこれは巡回関数として4つ候補があり、どれを選んでもよいのであった。よってここではPDFでもそうしているように、比較的単純なp(x)=x^2-2を選ぶことにしよう。またガロア群は巡回群{\rm Gal} (\mathbb{Q}_f/\mathbb{Q}(\zeta_5) )=\{{\rm id}_{\mathbb{Q}_f},\sigma,\cdots,\sigma^{4}\}と書くことにする(ここで\sigma^5={\rm id}_{\mathbb{Q}_f}である)。ただし、ここで\sigma\sigma ^k(\alpha )=p^{(k)}(\alpha )を満たすように取るものとする(これはのちの計算パートのところで、\sigmaを(計算可能な対象)p(x)=x^2-2として扱うためである。以下のこの節の議論ではこの関係式は使わない)。



さて、方程式論において解を代数的に求める際にとても重要な役割を果たすのが以下に示す(ラグランジュの)リゾルベント(分解式)である。以下k=0,1,2,3,4とする。

r(\alpha,k)=\alpha+\zeta_5^k\sigma(\alpha)+\zeta_5^{2k}\sigma^2(\alpha)+\zeta_5^{3k}\sigma^3(\alpha)+\zeta_5^{4k}\sigma^4(\alpha)


これは解と1の原始累乗根のべきの線型結合で表される式で、非常に巧くできている。それはガロア群の元\sigmaを作用させてみればわかる。

\sigma(r(\alpha,k))
=\sigma(\alpha+\zeta_5^k\sigma(\alpha)+\zeta_5^{2k}\sigma^2(\alpha)+\zeta_5^{3k}\sigma^3(\alpha)+\zeta_5^{4k}\sigma^4(\alpha))
=\sigma(\alpha)+\zeta_5^k\sigma^2(\alpha)+\zeta_5^{2k}\sigma^3(\alpha)+\zeta_5^{3k}\sigma^4(\alpha)+\zeta_5^{4k}\alpha
(ここでガロア群の元は準同型であること(p.280 定義5.2)とガロア群の元は基礎体(ここでは\mathbb{Q}(\zeta_5))の元を「すり抜ける」ことを使っている*4

=\zeta_5^{-k}r(\alpha,k)

なんとたかが定数倍の変化に収まるようにできているのである。そうすると何が言えるか?、という疑問は以下の議論を見れば氷解するであろう。




今度は(唐突な式ではあるが)r(\alpha,k)r(\alpha,1)^{5-k}ガロア群の元\sigmaを作用させてみるとどうなるか見てみよう。

\sigma(r(\alpha,k)r(\alpha,1)^{5-k})
=\sigma(r(\alpha,k))\sigma(r(\alpha,1))^{5-k}
(ここでまたガロア群の元は準同型であることを使っているp.280 定義5.2)
=(\zeta_5^{-k}r(\alpha,k))(\zeta_5^{-1}r(\alpha,1))^{5-k}
=r(\alpha,k)r(\alpha,1)^{5-k}

なんと不変なのである。



ガロア群は{\rm Gal} (\mathbb{Q}_f/\mathbb{Q}(\zeta_5) )=\{{\rm id}_{\mathbb{Q}_f},\sigma,\cdots,\sigma^{4}\}という形であったから結局どのガロア群の元を作用させてもr(\alpha,k)r(\alpha,1)^{5-k}は不変だということがわかる。これはr(\alpha,k)r(\alpha,1)^{5-k}ガロア群の不変体に属するということを意味し、ガロアの基本定理より*5ガロア群の不変体はその基礎体(ここでは\mathbb{Q}(\zeta_5))に等しかったのであるから(p.395 定理5.33最後の式)、これは\mathbb{Q}(\zeta_5)の元であるとわかる。つまりr(\alpha,k)r(\alpha,1)^{5-k}\zeta_5有理数係数の有理式(それは多項式に出来る)で表せることを意味しているのである!

こうなるともう\alphaなどという正体不明なものは消えているので完全にこれの値が求められることがわかるのである!

記号で表しておくと、あるs_k\in \mathbb{Q}[x]が存在してr(\alpha,k)r(\alpha,1)^{5-k}=s_k(\zeta_5)、ということである。



さて我々の目標は5つのリゾルベントの値を求めることである。それは以下の式を見れば納得されるだろう。

\alpha=\dfrac{1}{5}(r(\alpha,0)+r(\alpha,1)+r(\alpha,2)+r(\alpha,3)+r(\alpha,4))

つまりリゾルベントの値がわかれば求めたい根\alphaもわかるということである(他の根は巡回関数を使えば出せる*6)。いやはやとにかく巧くできている式である。

さて後はリゾルベントの値を求めることに専念すればいいわけであるが、しかしもう我々はゴールにたどり着いている。

r(\alpha,0)=(すべての根の和) (解と係数の関係より求まる)
r(\alpha,1)=\sqrt[5]{s_1(\zeta_5)}
r(\alpha,k)=\dfrac{s_k(\zeta_5)r(\alpha,1)^k}{s_1(\zeta_5)}\ \ \ (k=2,3,4)

右辺は全て既に分かっている値だからである。こうして無事代数的に解く道筋がわかった


具体的に計算

さて、前節でくどくど説明してきたのでここでは簡潔に行こう。計算にはPARI/GPを用いる。まずはコマンドを示そう。\sigma\sigma ^k(\alpha )=p^{(k)}(\alpha )を満たすように取っていたことに注意されたい。


1.解きたい既約巡回多項式を定義する

gp > f(x)=x^5+x^4-4*x^3-3*x^2+3*x+1


2.fを最小分解体上で因数分解する(巡回多項式を得るための手順なので必要なければやらなくてもよい。下の画像ではやっていない*7

lift(factornf(f(x),f(a)))


3.巡回関数を定義する

gp > p(x)=x^2-2

4.1の原始5乗根zを定義する

gp > z=Mod(z,subst(polcyclo(5),x,z)) *8


5.多項式の根aを定義する

gp > a=Mod(a,f(a))

6.fのリゾルベントを定義する*9

gp > r(a,k)=a+z^k*p(a)+z^(2*k)*p(p(a))+z^(3*k)*p(p(p(a)))+z^(4*k)*p(p(p(p(a))))

7.基礎体の元である(従って求値可能な)多項式sを定義する

gp > s_(k)=r(a,k)*r(a,1)^(5-k)

8.sの値を計算する

gp > lift(lift(s_(1)))
gp > lift(lift(s_(2)))
gp > lift(lift(s_(3)))
gp > lift(lift(s_(4)))

実際に計算してみた画面は以下のようになる(s_(k)に書き変えた画像に変更)

PDFの結果とまさに同じことがわかるだろう。さて、後はこれらを使って\alphaを求めよう。一応公式化しておいたので共有しておく


\alpha=\dfrac{1}{5}(r(\alpha,0)+r(\alpha,1)+r(\alpha,2)+r(\alpha,3)+r(\alpha,4))
=\dfrac{1}{5}(-\dfrac{(x^{4}\text{の係数})}{(x^5\text{の係数})}+\sqrt[5]{s_1(\zeta_5)}+\dfrac{s_2(\zeta_5)\sqrt[5]{s_1(\zeta_5)}^2}{s_1(\zeta_5)}+\dfrac{s_3(\zeta_5)\sqrt[5]{s_1(\zeta_5)}^3}{s_1(\zeta_5)}+\dfrac{s_4(\zeta_5)\sqrt[5]{s_1(\zeta_5)}^4}{s_1(\zeta_5)}

これに最後に出した4つの値などを代入すればよい。*10

別の例

別の例を扱ってみよう。例えばf(x) = -1024x^5 + 2816x^4 - 2816x^3 + 1232x^2 - 220x + 11を扱うことにする。まず

gp > f(x) = -1024*x^5 + 2816*x^4 - 2816*x^3 + 1232*x^2 - 220*x + 11
gp > polgalois(f(x))

と打ってみると

%12 = [5, 1, 1, "C(5) = 5"]

と出力される。これはガロア群が5次の巡回群であることを示しているので、主定理よりこれは巡回多項式であるとわかる。出力結果の読み方については
period-mathematics.hatenablog.comを参照されたい。

巡回関数も計算するとp(x)= -4x^2 + 4xであることがわかる。計算画面とその結果だけ置いておこう

計算画面

結果のコピペ
gp > lift(lift(s(1)))
%8 = 55/512*z^3 - 165/1024*z^2 + 55/256*z + 143/512

gp > lift(lift(s(2)))
%9 = 99/256*z^3 + 33/256*z^2 + 77/256*z - 33/256

(gp > lift(lift(s(3)))
%10 = 11/64*z^3 + 11/32*z^2 - 11/32*z

gp > lift(lift(s(4)))
%11 = 11/16


他にも例えば
超難問、自作問題です。 - 5次方程式32x^5+16x^4-32x... - Yahoo!知恵袋には32x^5+16x^4-32x^3-12x^2+6x+1という例がある。これを計算してみると以下のような出力が出る。

gp > lift(lift(s(1)))
%10 = -55/16*z^3 + 165/32*z^2 - 55/8*z - 143/16

gp > lift(lift(s(2)))
%11 = 99/16*z^3 + 33/16*z^2 + 77/16*z - 33/16

gp > lift(lift(s(3)))
%12 = -11/8*z^3 - 11/4*z^2 + 11/4*z

gp > lift(lift(s(4)))
%13 = 11/4

しかしそこには綺麗なコサインの値になると書いてある。見た目は全然違うが実は等しいのである。これは上で扱った例も実は同じなのである。これについては「まとめ」で少し触れよう。

まとめ

ここでは5次の場合のアルゴリズムを明示したが、適切に修正することで他の次数でも通用するようなものになるだろう。しかしあまりに高次なものだとPCが悲鳴を上げるかもしれない。

理論面ではリゾルベントの凄さが際立った。リゾルベントは古典方程式論における過去の遺物として見られてしまうような説明に終始している啓蒙書が多いが、これは\zeta_nを含む基礎体の巡回拡大が冪根拡大であるという驚くべき、そして方程式論において決定的な要となる定理の証明の中心となる概念で、ラグランジュの精神はしっかり引き継がれていることがわかるのである。

後半は例を計算してみたが、実際に求めてみようとするとずいぶんと複雑な形に見える。しかしこれらは実は三角関数で表すことが出来る。それはこの例においては実根なら明らかな話なのであるが一般に既約巡回多項式の実根は三角関数で表すことが出来る。これはクロネッカーウェーバーの定理と呼ばれる深淵な定理に繋がる現象である*11。事実、クロネッカーウェーバーの定理やそれに続くクロネッカーの青春の夢は、アーベル方程式というガロア群がアーベル群となるような方程式の根が1の累乗根で書けるという現象からクロネッカーが見出したものである。

*1:正確には係数体からその最小分解体への体の拡大の

*2:つまりその記事の注釈1においてF=\mathbb{Q}(\zeta_n)とする、ということである

*3:abstract algebra - How to solve a cyclic quintic in radicals? - Mathematics Stack Exchange でも扱われていた

*4:要は\mathbb{Q}(\zeta_5)-準同型、ということである

*5:自明なことではない、という強調である

*6:ゾルベントだけでも表現できるので必ずしも巡回関数に頼らなくてはならないわけではない

*7:個人的にはこれを踏んでおくと次の手順のコマンドの前に「gp > -subst((a^2-2),a,x)」を入れられて楽になると思う(subst(f(x),x,y)はf(y)を出力する変数変換のコマンド)(ただしここで「 gp > p(x)= -subst((a^2-2),a,x)とやってしまうと後でエラーが出るので注意(aをmodで還元する影響)」)。画像では因数分解すると見切れそうだったのでやらなかった。

*8:ここでは合わせ技が決まっている。polcyclo(5)は変数xの5次の円分多項式を表す。

*9:ここでリゾルベントがaとzという2つのmodで還元されている文字を含んでいることに注意する。従って手順8においてliftも2回行わないといけないのである。liftを使わない素の状態だと、最初にzで次数下げをしてからaで次数下げ、という順番で還元されているようである

*10:この後に続いて\alphaをPARI/GPに計算させることはお勧めしない。累乗根を取る時点で小数がべらぼうに出てきてしまうからである。しかも結果は複素数なので値の大きさから検算するということも出来るとは限らない。

*11:巡回拡大はアーベル拡大なのでクロネッカーウェーバーの定理より実数解は円分体の指数2の中間体に含まれるため

S_5の可解な可移部分群の決定

本稿はhttp://repository.hyogo-u.ac.jp/dspace/bitstream/10132/1612/1/ZD30301003.pdfの前半の内容で述べられているS_5の可解な可移部分群の決定の行間を埋めたものである。以下「H<G」でHGの部分群であること、「H\sim K」で部分群H,Kが共役であることを表す。


唐突だがS_5の三つの部分群を定義する。

F_{20}=\langle\sigma , \tau\rangle, F_{10}=\langle\sigma , \tau ^2\rangle,F _5=\langle\sigma\rangle

(\sigma =(1 2 3 4 5),\tau =(2 3 5 4))

例えばF_5を具体的に書き出してみるとF_5=\{e,(12345),(13524),(14253),(15432)\}となる。

実はここで次が成り立つ

[主定理]
S_5の可解な可移部分群はF_{20},F_{10},F_5のいずれかに共役。従って可移部分群 H < S_5に対して
 Hは可解\iff H F_{20}のある共役に含まれる

これは我々の欲するものである。本稿の目標はこれを証明することである。*1

本稿では群の作用や軌道・固定群定理について読者は知っているものとする。

これら三つの群について

F_5\cong C_5,F_{10}\cong D_{10}は簡単にわかるがF_{20}は簡単な群で表せるようには見えない。しかしこれはperiod-mathematics.hatenablog.comでも少し触れたが、実は1次のアフィン一般線形群AGL_1(\mathbb{F}_5)と呼ばれるものに等しく、これはある正規部分群N\cong C_4と部分群H\cong C_5との半直積N\rtimes Hに等しい(ちなみにNは平行移動のなす群、Hはスカラー倍のなす群である。詳細は例えば[cox][p.165]を見よ)。

ちなみにこれは5次のフロベニウス群とも同型である。*2

これらの可解性は以下のようにシローの定理で示すことができる

(*) F_5S_5およびF_{20}の5シロー部分群であるから、F_{20}におけるF_5の共役の個数は(F_{20}:N_{F_{20}}(F_5) )に等しい。またF_{20}>N_{F_{20}}(F_5)\rhd F_5に注意すればこれは(F_{20}:F_5)=4の約数であり、シローの定理より{\rm mod}\ 5で1に等しいからこれは1である。従ってF_{20}\rhd F_5\rhd 1よりF_{20}の可解性がわかり、その部分群も可解であることから主張が従う。

位数30,40の部分群が存在しないこと

まず有限群の解析における重要な道具である置換表現を復習しよう。

[定義]
Gを群、Hをその部分群とする。

このときGG/H上に\varphi _a:gH\mapsto agH (a\in G)によって作用する。これにより群準同型\varphi :G\to S_{G/H};a\mapsto \varphi _aが定まる。

これを部分群Hの定めるGの置換表現という。

ここで次は基本的な性質である。

[命題]
{\rm Ker}(\varphi )<H.
証明
a\in {\rm Ker}\varphiとするとaH=H\iff a\in Hより{\rm Ker}(\varphi )<H
証明終了

これを用いてS_5を解析してみよう。

[定理]
S_5は位数30,40の部分群を持たない
証明
G:=S_5の部分群Hの位数が30だと仮定する。このときHの指数は4であるからHの定める置換表現\varphi :G \to S_4が存在して{\rm Ker}(\varphi )<H.

ここでG\rhd {\rm Ker}(\varphi )であるから1,A_5,S_5のいずれかである。しかし|H|=30ゆえ{\rm Ker}(\varphi )=1でなければならず、G=S_5からS_4単射が入ることになり矛盾。もう一方も同様。
証明終了

本題の証明

基本的な補題を確認しておく(証明は容易である)

[補題]
H,K<GXGの任意の部分集合とするとき以下が成り立つ。

  • K\rhd H\iff N_G(H)>K(等号成立条件はG=K
  •  G>H\Rightarrow N_G(X)\rhd N_H(X)
  • H\sim K\Rightarrow N_G(H)\sim N_G(K)

またS_nの元の位数の最大値はnであることにも注意する(サイクル分解を考えればわかる)。


主定理の証明

GS_5の可解な可移部分群とすると、5| |G|(\because 軌道・固定群定理)かつ|G| |120=|S_5|と上で示した定理を考慮すれば|G|の候補は5,10,15,20である。
|G|=5のとき,GS_5の5シロー部分群よりG\sim F_5
|G|=15のとき,これは巡回群であるが*3S_5が位数15の元を含むことになりこれは矛盾。
|G|=20のとき,Gの5シロー部分群Pは、シローの定理からG\rhd Pであるから補題よりG=N_G(P)である。この場合もいったん保留する。

さて、保留された共役性を示そう。(*)と同様の議論をする。まずそこで導かれたF_{20}\rhd F_5補題を合わせればN_{S_5}(F_5)\rhd N_{F_{20}}(F_5)=F_{20}を得る.
同様にS_5におけるF_5の共役の個数は(S_5:N_{S_5}(F_5))に等しい。またS_5>N_{S_5}(F_5)\rhd F_{20}に注意すればこれは(S_5:F_{20})=6の約数であり、シローの定理より{\rm mod}\ 5で1に等しいから1または6であるが1であるとするとN_{S_5}(F_5)=S_5となるがこれは容易に矛盾だとわかる*4。よってN_{S_5}(F_5)=F_{20}。故にG\cong F_{20}であればある5シロー部分群Pが存在してG=N_{S_5}(P)と書ける*5。ここでP\sim F_5補題よりG=N_{S_5}(P)\sim N_{S_5}(F_5)=F_{20}である*6から|G|=20のときは解決。
またG\cong F_{10}であるとする。Gはある5シロー部分群Qを含むが、Gを適切にその共役G'に移すことでその5シロー部分群がF_5となるようにできる。このとき(G':F_5)=2よりF_5G'正規部分群である。従って\zetaG'の位数2の元とすると\zeta^{-1}\sigma\zeta\in F_5=\langle\sigma \rangleとなり,G'\cong D_{10}であることから\zeta^{-1}\sigma\zeta=\sigma^{-1}=(15432)とならねばならない。これを満たす\zeta\zeta=(25)(34),(15)(24),(14)(23),(13)(45),(12)(35)であり、どれを選んだとしても\langle\zeta,\sigma\rangle=F_{10}となることが計算によってわかる。従ってG\sim G'=F_{10}となり|G|=10のときも解決。*7

逆にF_{20},F_{10},F_5のいずれかに共役であるとする。F_{20},F_{10},F_5は長さ5のサイクルを含むのでこれらは可移で、また(*)より可解でもある。以上より主張が従う。
証明終了

[1]http://www.isc.meiji.ac.jp/~kurano/soturon/ronbun/04kurano.pdf
[cox]ガロワ理論(上)・(下) デイヴィッド・A. コックス (著), 梶原 健 (翻訳)

*1:より一般的な命題として「p素数とするときS_pの可解な可移部分群は(1\,2\,\cdots ,p)を含むAGL_1(\mathbb{F}_p)の部分群に共役」というものがある([cox]命題14.1.4])。これはガロアの方程式論における有名な結果「p素数fp次既約多項式とするとき、fが可解\iff fの任意の異なる二解による係数体の拡大体が全てfの最小分解体\iff fガロア群はAGL_1(\mathbb{F}_p)の部分群と同型」の証明の中心となるものである。この定理はガロア群が本質に関わってくることからガロア自身、とても気に入っていたようである

*2:文献によってはメタ巡回群とも呼ばれている。一般にフロベニウス群はメタ巡回群である。このようにいろいろと性質を持ってかつ位数も比較的小さいのでそういう意味で重要な例なのではないかと思う。

*3:証明は例えば[1]の例7.2

*4:例えば(12)^{-1}(12345)(12)=(13452)\notin F_5

*5:F_{20}\cong Gの同型をfとすると、G=f(F_{20})=f(N_{S_5}(F_5) )=N_{S_5}(f(F_5) )よりP=f(F_5)と置けばよい

*6:一般に素数pに対してN_{S_p}(<(1\, 2\,\cdots p)>)=AGL(1,\mathbb{F}_p)である。証明は[cox][p.557,補題14.1.2]。

*7:PDFの方には「N_{S_5}(F_5)=F_{20}>F_{10}より,あるGの5シロー部分群Qが存在してG<N_{S_5}(Q)であるのでG\sim F_{10}」というようなことが書いてあるのだが正直よく意味が解らない。もしこれの意味が分かる方がいましたら是非教えて下さい

多項式のガロア群の計算~PARI/GP入門~

「与えられた多項式ガロア群を求めたい」という古典的欲求に応えるものとして今日では計算機が役に立つが今回はPARI/GPというものを採用したいと思う。これについてはperiod-mathematics.hatenablog.comでも「アルゴリズムの計算の実例」という節の始めで紹介している。そこにも書いてある通りこれを選んだのは単純に使いやすく、わかりやすく、またなんといってもスマホ(ただしAndroid限定)に対応しているからである(Androidでは「PariDroid」というアプリ名でGoogle Playストアを探せば出てくる、現在では)。ダウンロードリンクなどもそこに貼ってある。


例1(使い方を知る)

さていきなりであるが今回の問いに答えるコマンドは「polgalois」というものである。これを使うと7次以下の既約多項式ガロア群を計算することが出来る。さっそく試してみよう。

例はperiod-mathematics.hatenablog.comにある f(x)=x^3+x^2-2x-1を使ってみよう。この記事によるとガロア群は三次の巡回群とのことである。これを確かめよう。


1.まずはこの多項式を定義する

コマンド

gp > f(x)=x^3+x^2-2*x-1


2.次に先ほどの「polgalois」を使ってみよう

コマンド

gp > polgalois(f(x))


すると

%2 = [3, 1, 1, "A3"]

と出力されるはずである。念のため計算画面を見せておくと以下のようになる*1

f:id:period_mathematics:20190503194931p:plain



さてこれが何を意味しているかが問題である。polgaloisコマンドで出力される型は

[ガロア群の位数、符号、番号、CHMラベル]

というものになる。



ガロア群の位数は大丈夫だろう。今回なら位数は3である(この時点で三次巡回群であることは群論の知識から確定はする)。

符号、番号は気にしなくてよいだろう。CHMラベルというもの*2だがこれも気にせず以下の対応表を見ればよい(画像はhttp://math.mit.edu/~brubaker/PARI/PARIusers.pdfのp.125より)

f:id:period_mathematics:20190503193810p:plain

ガロア群)=[ガロア群の位数、符号、番号]という形で書かれておりこれにより、今回の場合はA_3=C_3= [3, 1, 1]とあるので、ガロア群はA_3、すなわち三次交代群(=三次巡回群)であることがわかる。


例2(見慣れない群が出てきたときには)

もう一つ例を計算してみよう今度はよく可解な五次方程式の例として出てくるx^5+15x+12を扱う

gp > polgalois(x^5+15*x+12)

と打つと以下のように出てくる

[20, -1, 1, "F(5) = 5:4"]

これは先ほどの表で見るとM_{20}= [20, -1 ,1]と書いてある。位数20の群であることはわかるがM_{20}という記号は見覚えがない。これはなんであろうか?


これは実はフロベニウス群と呼ばれるもので、
peng225.hatenablog.com
F_{20}として紹介されている(この一連の記事はとても面白いものなので余裕がある読者は是非一読されたい*3)。

このように(恐らく多くの読者にとって)なじみの薄い群が出てくるものもある。こういうときはどうすればいいか、という話なのだが実は

n次既約多項式ガロア群はS_nの可移(推移的な)部分群

ということが知られている。これについてはそこの記事に書いてあるのでそこを参照されたい。ここでS_nの可移部分群は既に研究されていて例えば以下のようなサイトに多項式でいえば31次多項式までに相当する可移部分群のリストがまとめられている*4

https://people.maths.bris.ac.uk/~matyd/GroupNames/T31.html

n次既約多項式ガロア群を探しているなら「On n points」というところを見ればよい。「ID」のところの最初の数字が群の位数である*5。PARI/GPで出てくる既約多項式ガロア群は必ずこれの中のどれかになるはずであるからもしわからない群が出てきたらこのようなサイトをもとにいろいろと調べることが出来る。

*1:いきなりpolgalois(x^3+x^2-2*x-1)でもよい

*2:対称群の可移部分群を調べたとある論文に出てくるものらしい?

*3:実はPARI/GP(がAndroid対応であること)をこのブログで知った

*4:わかりやすさのためにこう書いたが要は濃度が31までの集合に作用する対称群の可移部分群のリストのことである

*5:これらが全てnの倍数になっていることに気が付くであろう。これはS_nの可移部分群の最大の特徴である

有限群に対する可解群の定義の同値性の証明

可解群の定義は交換子列が有限でとまる(最後が自明になる)という記述がよく群論の教科書では採用されているように感じる。しかし本によっては交換子の概念を出さずにやっているものもある(特にガロア理論に関する啓蒙書でよく見る気がする)。具体的には

ある自然数nに対してD^n(G)=1
アーベル的正規列を持つ
各因子が素数位数の巡回群であるような組成列を持つ
巡回的正規列を持つ

の4つである(定義は下にある)。こういうのが混在していると混乱するのでここではこれらの関係について書きたいと思う。結論から言えば「有限群」についてならこれらは同値である(無限群の場合は必ずしも成り立たない)。それを証明しよう。以下「H<G」でHGの部分群であることを表す。

[定義]
Gの部分群の有限降鎖、
G=G_0\supset G_1\supset \cdots \supset G_n=1
が正規列であるとは各iに対してG_i\rhd G_{i+1}が成り立つことを言う。各因子G_i/G_{i+1}巡回群であるとき巡回的正規列、アーベル群であるときアーベル的正規列、単純群であるとき長さnの組成列と言う*1




さて今回重要な役割を果たす対応定理を復習しておこう。

[対応定理]
剰余群\overline{G}:=G/Hの部分群全体の集合\overline{S}Hを含むGの部分群S_Hの間に以下のような対応による全単射が存在する。
\overline{G}>\overline{V}に対して\overline{V}=V/HなるV< Gが一意的に存在する
この対応により正規部分群も一対一対応する。また第三同型定理より(U:V)=(\overline{U}:\overline{V})
証明は群論の専門書を参照されたい。


[補題]
有限アーベル群G|G|の任意の約数を指数にもつ部分群をもつ。
証明
(初等的にもできるかもしれないが)有限アーベル群の基本定理を認めればすぐに従う。
証明終了


[Oreの定理*2]
Gを有限群、pGの位数の最小の素因数とする。部分群H(G:H)=pを満たすとき、HG正規部分群である
証明は例えば|G|の最小の素数の約数をpとする。Gは指数pの部分群Hを含む有限群とする。HはGの... - Yahoo!知恵袋を参照のこと。



さて本題である。

命題
有限群Gに対する以下の命題は同値
(a)ある自然数nに対してD^n(G)=1
(b)アーベル的正規列を持つ
(c)各因子が素数位数の巡回群であるような組成列を持つ
(d)巡回的正規列を持つ
証明
(a)\iff (b)*3
G=G_0\supset G_1\supset \cdots \supset G_n=1をアーベル的正規列とすると、D(G_i)\subset G_iであるから数学的帰納法によってD^i(G)\subset G_i。従ってD^n(G)\subset G_n=1であるので片方が従う。逆は自明。
(b)\iff (c)
帰納法で示す。Gがアーベル的正規列G=G_0\supset G_1\supset \cdots \supset G_n=1を持つとする。ここでG/G_{1}はアーベル群なので補題より(G/G_{1}:N/G_{1})|G|の最小の素因数pとなるような部分群N/G_{1}が取れる。ここで対応定理より(G:N)=(G/G_{1}:N/G_{1})=pであるのでOreの定理よりNG正規部分群である。よって再び対応定理よりN/G_{1}G/G_{1}正規部分群である。 よって帰納法の仮定より各因子が素数位数の巡回群であるようなNの組成列N\supset N_1\supset \cdots \supset N_m=1がとれる。ここでG\supset N\supset N_1\supset \cdots \supset N_m=1は今までの議論より各因子が素数位数の巡回群であるようなGの組成列となる。よって片方が従う。逆は自明。
(c)\Rightarrow (d),(d)\Rightarrow (a)は自明である。
証明終了

*1:ジョルダン・ヘルダーの定理によれば組成列は本質的に一意である。この定理によって任意の有限群は有限単純群の積み重ねであると解釈でき、従って有限単純群の分類問題の重要性が了解されると思う。詳細は群論の専門書を参照のこと。

*2:p=2の場合がよく知られている

*3:証明からもわかるようにこれは有限群でなくとも成り立つ

「解の巡回」にトドメをさす!~ガロア理論による背景の完全解明~

まず次の問題を見てもらいたい。

f:id:period_mathematics:20190502004152p:plain

 

2017年の早稲田大学の入試問題である。解答は適当に検索すると例えばhttp://nonoishi.web.fc2.com/entexam/nyuusi17-1.pdfが見つかる。そこにはF(x) = x^3+x^2-2x-1、その根は2\cos(2\pi/7),2\cos(4\pi/7),2\cos(6\pi/7)と書いてある。

 

 

この特別な多項式F(x)を「巡回多項式」、G(x)をその「巡回関数」と呼ぶことにするならば、この問題は多項式F(x)が巡回多項式G(x)がその巡回関数であることを主張していると言える。

 

この気持ちに沿うように「巡回多項式」、「巡回関数」を定義してみよう。

 

 

 

[定義]

f\in \mathbb{Q} [x]\alpha =\alpha _0,\cdots,\alpha _{n-1} を解に持つ$n$次の有理数係数多項式とする。ここでfが巡回多項式であるとは次が成り立つ事をいう:

あるp(x)\in \mathbb{Q} [x]があって\alpha _i=p^{(i)} (\alpha )\,(i=0,\cdots ,n-1)

このとき$p$を$f$の巡回関数という。

 

 

ここでp^{(i)}pi回合成した関数を表している(ただし$p^{(0)}(x):=x$)。

 

注意:$p$は唯一つに定まるとは一言も言っていない。

 

さて、もし x^3+x^2-2x-1という多項式だけ見せられて、これが巡回多項式であること、そして巡回関数は何であるかを求めることは出来るのだろうか?

 

まずは前者から解決しよう。いきなりであるが次がこのテーマの主定理であり、この話題に決着をつけるものである。

 

以下\mathbb{Q}_f多項式f\mathbb{Q}上の最小分解体を表す。*1

 

[主定理]
f\in \mathbb{Q} [x]\alpha =\alpha _0,\cdots,\alpha _{n-1} を解に持つ既約n多項式とする。このとき以下が成り立つ

\mathbb{Q}_f/\mathbb{Q} n次巡回拡大\iff fは巡回多項式

 

巡回拡大とはその拡大のガロア群が巡回群であるということである。つまりこの問題の構造はガロア理論によって記述されるものなのである。 またここでn素数のときにはもっと特殊な状況が起こる(後で証明する)

 

[系]
f\in \mathbb{Q} [x]\alpha =\alpha _0,\cdots,\alpha _{p-1} を解に持つ既約p多項式とする(p素数)。このとき以下は同値である     
(a) {\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )\cong \mathbb{Z}/p\mathbb{Z}
(b) fは巡回多項式
(c) fのある根\alphaを用いて\mathbb{Q}_f=\mathbb{Q}(\alpha)と書ける

 ここで \mathbb{Z}/p\mathbb{Z}p巡回群のことである。

これにより、例えば

代数体上の多項式の因数分解 - Period-Mathematics

で挙げられているf(x)=x^5+x^4-4x^3-3x^2+3x+1はその因数分解の形から条件(c)を満たしていることがわかるので、巡回多項式であることがわかる(後で確認する)*2

 

主な想定読者層は中高生や数学が専門でない(なかった)方、としているので証明や説明は懇切丁寧に書いた。ただ、ガロア理論についてしっかりした知識がない場合、ちゃんとした本を一冊傍らに置いておくことを強くお勧めする。後述するが、本稿ではよく知られた事実などを石井俊全『ガロア理論の頂を踏む』から引用したりしているので、例えばこの本を用意しておけば十分である。

 

本稿を通じてガロア理論ないし現代数学の大きな魅力である、計算の泥沼の上を優雅に飛んで行ってしまう感覚を味わえたら幸いである。

 

 目次

 

 主定理の証明(ここは飛ばして先に計算を楽しむこともできる)

主定理を示す前にいくつか補題などを用意する。いくつかよく知られた事実などは認めることにする。ただ一応出典は載せておいた方がいいと思ったのでここでは、最近人気のようである石井俊全『ガロア理論の頂を踏む』から引用することにする。その方が多分読者層にもあっているだろうし何よりこの本は全く省略がないので問題ない。以下断りなくページ数などを書いたらこの本についてのものとする。また説明も、高校生などを想定してかなりわかりやすくかみ砕いて説明したつもりである。

 

補題1
Wを有限次元ベクトル空間Vの部分空間とする。ここでWも有限次であり、{\rm dim}V={\rm dim}W\iff V=Wが成り立つ。(p.319 定理5.16)

 

補題2
n次既約多項式f\in \mathbb{Q} [x]の根\alpha による単拡大体\mathbb{Q} (\alpha )\mathbb{Q} 上のベクトル空間の基底として\bigl\{1,\alpha ,\alpha ^2,\cdots ,\alpha ^{n-1}\bigr\} が取れる。よって[\mathbb{Q} (\alpha ):\mathbb{Q}]=n(p.288 定理5.3 後半)

 

命題1
 |{\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )|=[\mathbb{Q}_f:\mathbb{Q} ](p.377 定理5.28)

 

命題2
L \supset L' \supset \mathbb{Q}をそれぞれ\mathbb{Q}n,n'次拡大体とするとき、n=n' \iff L=L'

証明

\Leftarrow は仮定そのものであるので\Rightarrow を示せばよいが、拡大次数の定義を思い出せば補題1より直ちに従う。

証明終了

 

では主定理の証明に入る。もう一度主定理を述べておこう。

 

[主定理]
f\in \mathbb{Q} [x]\alpha =\alpha _0,\cdots,\alpha _{n-1} を解に持つ既約n多項式とする。このとき以下が成り立つ

\mathbb{Q}_f/\mathbb{Q} n次巡回拡大\iff あるp(x)\in \mathbb{Q} [x]があって\alpha _i=p^{(i)} (\alpha )\,(i=1,\cdots ,n)(つまりfは巡回多項式

証明 

\mathbb{Q}_f/\mathbb{Q} n次巡回拡大であるとする。まず\mathbb{Q}_f/\mathbb{Q} n次拡大である事により、命題2より\mathbb{Q}_f=\mathbb{Q} (\alpha )=\mathbb{Q} [\alpha ](最後のイコールは\alpha \mathbb{Q}上代数的であることによる(p.288 定理5.3 前半*3))。命題1より|{\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )|=[\mathbb{Q}_f:\mathbb{Q} ]=nであるから、{\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )=\{{\rm id}_{\mathbb{Q}_f},\sigma,\cdots,\sigma^{n-1}\}と書ける。

 

\sigma (\alpha )\alpha の共役であることからあるiがあって\sigma (\alpha )=\alpha _iとなる。\alpha _i=\sigma (\alpha )\in \mathbb{Q}_f は、\mathbb{Q}_f=\mathbb{Q} [\alpha ]より、あるp\in \mathbb{Q}[x]を用いて\alpha _i=p(\alpha)と書けることがわかる。

 

このとき、必要に応じて添え字を付け変えて、\alpha _{k}:=\sigma ^k(\alpha )(k=1,\cdots ,n-1)と書くことにすると、

\alpha _k=\sigma ^k(\alpha )

=\sigma ^{k-1}(p(\alpha ))

=\sigma ^{k-2}(p(\sigma (\alpha )))

=\sigma ^{k-2}(p^{(2)}(\alpha ))

=\cdots =p^{(k)}(\alpha )

であるので示された。

 

次に逆を示す。まず仮定より \mathbb{Q}_f=\mathbb{Q} (\alpha )であるから命題2より[\mathbb{Q}_f:\mathbb{Q} ]=nが言えるので命題1と合わせると、|{\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )|=[\mathbb{Q}_f:\mathbb{Q} ]=nを得る。fが既約であることから{\rm Gal} (\mathbb{Q}_f/\mathbb{Q})は任意の二つの根を選んだとき、一方を他方へ移す元を必ず含んでいる(p.292 定理5.5*4 )。従ってある\tau \in {\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )があってp(\alpha )=\alpha_1=\tau (\alpha )となる。このとき\tau ^k (\alpha )=p^{(k)}(\alpha )=\alpha_{k}(k=1,\cdots ,n-1)となり、\alpha をその共役へ移す同型がn個全て得られたので*5{\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )の元はこれで全てである(詳しく言うなら\{{\rm id}_{\mathbb{Q}_f},\tau,\cdots,\tau^{n-1}\}\subset {\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )がわかり、最初に述べたように|{\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )|=nあるから{\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )=\{{\rm id}_{\mathbb{Q}_f},\tau,\cdots,\tau^{n-1}\} とならねばならない、ということである)。従って示された。

証明終了

 

系も示すのであった。

[系]
f\in \mathbb{Q} [x]\alpha =\alpha _0,\cdots,\alpha _{p-1} を解に持つ既約p多項式とする(p素数)。このとき以下は同値である     
(a) {\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )\cong \mathbb{Z}/p\mathbb{Z}
(b) fは巡回多項式
(c) fのある根\alphaを用いて\mathbb{Q}_f=\mathbb{Q}(\alpha)と書ける

証明

(a)\Rightarrow (b)は主定理から従い、(b)\Rightarrow (c)は自明なので(c)\Rightarrow (a)のみ証明すればよい。

(c)が成り立っているとすると、命題2より[\mathbb{Q}_f:\mathbb{Q} ]=pであるから、これと命題1を合わせると|{\rm Gal} (\mathbb{Q}_f/\mathbb{Q} )|=[\mathbb{Q}_f:\mathbb{Q} ]=pがわかり、ここから直ちに(a)が従う*6

証明終了

 

 

冒頭の例を考えてみる

まずは冒頭の問題について主定理を当てはめてみる。f(x)=x^3+x^2-2x-1とする。 {\rm Gal} (\mathbb{Q}_f/\mathbb{Q})が三次の巡回群であることを確認すればよいのだが、これは問題の内容から明らかである(これでわからない読者は恐らく説明されてもわからないだろうし、説明されて分かる読者は説明せずともはずであるから説明の必要はないのである。p.322の例と全く同じである)。

 

逆にガロア群が巡回群である多項式を持ってきてそれが巡回多項式となる例も見たい。そのためには次の節の内容が必要であるので、そこで例を出そう。

 

巡回関数の計算 

さて二つ目の主題である。これは\mathbb{Q}(\alpha)上での因数分解が与えられれば解決することはすぐにわかる(\alphafの根)。

 

ちょうどその方法をここに書いたのでまずこれを読んでほしい。

period-mathematics.hatenablog.com

計算にはPARI/GPというものを使う。Androidならスマホアプリもあるので非常に便利である。

 

さてでは冒頭の例f(x)=x^3+x^2-2x-1の巡回関数を求めてみよう。

まずはf(x)=x^3+x^2-2x-1\mathbb{Q}(\alpha)上で因数分解すると(x-\alpha)(x + (-\alpha^2 + 2))(x + (\alpha^2 + \alpha - 1))となる

 

コマンドと計算の様子は以下のようになる

 

コマンド

gp > f(x)=x^3+x^2-2*x-1

gp > lift(factornf(f(x),f(a)))

 

計算画面

f:id:period_mathematics:20190502221505p:plain

よってp_1(x)=x^2-2, p_2(x)=-x^2-x+1のどちらかが巡回関数だとわかる。

ここで主定理の証明を見ると納得されると思うが、生成元となる多項式を引く確率は1からn-1までの中でnと互いに素な数の個数を引く確率であるので\phi(n)/(n-1)である。特にn素数の時はどれを選んでもよい。今はn=3であるからどちらも巡回関数である。

 

ここで問題文に与えられていたG(x)=-1/(x+1)と形が違うと思うかもしれない。しかしこれは見かけが違うだけで本質的には*7同じである。というのもG(\alpha)=p_1(\alpha)なのである。これは簡単に確かめられるがPARI/GPでは以下のように確かめられる。

 

gp > a=Mod(a,f(a))

gp > lift(-1/(a+1))
%4 = a^2 - 2

 

よってどちらの表現を使ってもいいわけであるがGは既に問題で確かめられているのでp_1の方を確かめよう。その前に、念のためここまでをやった計算画面を以下に示す。

f:id:period_mathematics:20190504083154p:plain

 

さて確かめる内容はp_1(p_1(\alpha))=p_2(\alpha),p_1(p_1(p_1(\alpha)))=\alphaである。これは単なる計算なのでコマンドと計算画面だけ置いておこう。

 

コマンド

gp > p_1(x)=x^2-2
gp > lift(p_1(p_1(a)))
gp > lift(p_1(p_1(p_1(a))))

 

計算画面

f:id:period_mathematics:20190504083444p:plain

%6の結果でp_2(\alpha)が、%7の結果で\alphaがしっかり出ていることがわかるだろうか?これはそれぞれp_1(p_1(\alpha))=p_2(\alpha),p_1(p_1(p_1(\alpha)))=\alphaを表しており、従ってp_1が巡回関数であることが確かめられたのである!

 

p_2も巡回関数であったのでこっちを選んでも同様の結果が出るはずである。ここではあえて計算画面などを出さないので、読者自ら計算を試みられてほしい。PARI/GPの慣れにも、状況把握にも役立つはずである。

 

巡回関数の計算2(冒頭の問題以外の多項式の考察)

 

ここでは冒頭の入試問題以外の例も少し計算してみることにする。

 

まずは始めで予告したf(x)=x^5+x^4-4x^3-3x^2+3x+1について考察しよう。これについては既にそこに

f(x)=(x - \alpha)(x + (-\alpha^2 + 2))(x + (-\alpha^3 + 3\alpha))(x + (-\alpha^4 + 4\alpha^2 - 2))(x + (\alpha^4 + \alpha^3 - 3\alpha^2 - 2\alpha + 1))

という分解が計算されているので[系]より巡回多項式だったっわけであるが、これが巡回多項式であるかを確かめてみよう。

 

n=5素数であるからどれを選んでもよいので、例えばp(x)=x^4-4x^2+2を選んでみよう。計算結果だけ載せると以下のようになる(画像では(面倒だったので)liftをかましていないがもちろんかました方が見やすくきれいな見た目になる)。

f:id:period_mathematics:20190504083934p:plain

しっかり巡回して最後にはもとに戻っていることがわかる。他の三通りも試されたい。冒頭の問題のように分数表示をすることも出来よう(例えばx^2-2の分数表示は1/(x^4-3x^2+x)であることがわかる)。 

 

他にもいろいろと計算できるはずである。沢山遊んでみてほしい。筆者にはその余裕が無いので今はこうしてその土壌を整えることに集中した。そして何か面白いことをどんどん見出していってみてほしい。

 

 巡回多項式はどのように見つけ出せるか

 

実は三次多項式$f$に対しては,その判別式を$D$としたとき「\sqrt{D}有理数\iff fガロア群は巡回群」という定理があるので\sqrt{D}有理数であるとき,またそのときに限って$f$は巡回多項式です.$D$の公式はネットで検索すれば色々出てくるでしょうからPari/GPと合わせて色々計算を楽しんでみてください.

あとがき

中学生のときだったか高校生のときだったか、興味を引くページhttp://shochandas.xsrv.jp/solution/solution3.htmを見つけた。x^3-3x+1=0という見慣れた方程式が始めの方にあり、「またこれか」と思って読み進めていくとどんどん見覚えのない記述が目に飛び込んできた。

 

てっきりこれは解が三角関数で表せるという、とても特殊な状況の中でもさらにたまたま起こるような現象だとばかり思っていたがそこには一般の異なる3つの実数解を持つ3次方程式に対してなんと公式まで与えられていた*8。これには驚きどのようにして導出したかの解明に取り掛かるも当時の自分には2次が関の山であった。

 

またそのあとには4次の場合などより高次の場合が続いていた。必要十分条件や完全な公式は与えられていなかったが、読み進めるにつれて「ガロア理論」というワードが飛び交うようになっていた。それが恐らくキーなのだろうということは分かりつつも誰も決定打を与えられていなかったような雰囲気であった(ただ一人、大学教員と思われる人は完全にわかっていたようであるが)。

 

月日が流れ、ガロア理論を少しやり終えてからしばらくして、この話題を思い出し、かねてから気になっていた主定理の証明と巡回関数を求める方法を見出すことの二点に成功したのがちょうど去年の三月頃であった。

 

この問題について考えているサイトをよく見かけたが、ガロア理論が関係していることは勘づいている人は少なくなかったようだが、ガロア理論をちゃんと知らないため結局はそのキーワードを出すにとどまっているのがほとんどだった。ガロア理論を知らない人には到底記述できず、また知っている人は少し考えればわかることなのであえてしっかりとした回答を残さなかったのだろうという想像がつく。一番ましに思えたのがhttp://suseum.jp/gq/question/2733であった。

 

恐らく、少なくとも日本語の文献では、この現象に完全な解答を与えた文献は本稿が初めてなのではないのだろうかと思う。もしそうなら書いたかいがあったというものである。そうでなくとも昔抱いた疑問を完全に解決できたというだけでも嬉しいものである。解決当時も、計算の最後にしっかり「a」と出てきてくれたときは喜びに打ちひしがれた。

 

後半の計算パートはガロア理論がわかっている人も楽しめるのではないかと思う。ガロア理論を知らない人でもここで雰囲気だけでもつかむことは出来るかもしれない(念のため、この記事+傍らの本だけではガロア理論はまだわからないと思う(わかるきっかけにはなるかもしれないが)。本当にガロア理論を理解したいのなら啓蒙書ばかり読んでなんとなく分かった気にならずに必ずちゃんとした本を一冊手元に置いて、証明をしっかり追って勉強するのを強くお勧めする。例えば本記事で引用した石井俊全さんの本は良いと思う。\mathbb{Q}上の方程式のガロア理論に終始しているため単拡大定理を駆使してとっつきやすい内容となっている。基本定理の証明も単拡大ならではのオリジナリティのあるものであると思う)。

 

最初に宣言した通り証明も本当に丁寧に書いたので、少なくともガロア理論の本をある程度読んだことのある読者なら、時間をかければ必ず理解できると思う。そうでない読者も根気強くちゃんとした本にある程度時間をかければ、本稿を読み通すことができるようになっていると思う。一人でも多くの人がガロア理論の威力を体感出来たらそれは筆者の喜びである。

 

*1:以下の議論において\mathbb{Q}を全て標数0の体Fで置き換えることでF上の多項式に対しても全く同様の結果が成り立つ。

*2:ガロア群が5次の巡回群であることも直接PARI/GPを用いて確認することもできる(これは

多項式のガロア群の計算~PARI/GP入門~ - Period-Mathematics

にて紹介している)

*3:本には\mathbb{Q}(\alpha)と書いてあるが正しくは\mathbb{Q}[\alpha]である。\mathbb{Q}[\alpha]が体であることがわかって初めて\mathbb{Q}[\alpha]=\mathbb{Q}(\alpha)がわかる、という寸法である

*4:正確にはこの定理の同型、では正しくない。しっかり\mathbb{Q}_fの自己同型にしなければならず、その場合同型を拡張する必要がある。これを正確に扱っているのは雪江明彦『代数学2 環と体とガロア理論』の命題4.1.11である。が、しかし初学者は今の段階では特に気にせずその同型が{\rm Gal} (\mathbb{Q}_f/\mathbb{Q})の元であると(不正確ではあるが)思って構わないだろう

*5:p.301 定理5.10の理屈である

*6:素数位数の群は巡回群しかないという有名な事実が効いており、これがこの証明のキーである

*7:正確には\mathbb{Q}[x]/(f(x) )の元として

*8:参考:既約な三次多項式はそれが巡回多項式なら三つの実数解を持つ。逆は成り立たない(例えばx^3-7x^2+3x+2

代数体上の多項式の因数分解

本稿では次の問題を考える。

 

 f\in \mathbb{Q} [x] を代数体 \mathbb{Q} (\alpha) 上で因数分解するにはどうしたらよいか?”

 


これに対する答えとなるアルゴリズムhttp://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/0722-02.pdfの始めに載っている。ここではそれの証明および計算の実例を示してみよう*1

追記:このアルゴリズムはCohenの有名な"A course in computational algebraic number theory"の3章の6.2に載っていた。

まずそこで与えられているアルゴリズムは以下の通りである(一部記号など変えている)

 

1. s 有理数とし, f(x+sy) f_\alpha(y)  y に関する終結 r(x)={\rm Res} (f(x+sy),f_\alpha(y),y) を求める.このとき r(x) が無平方(即ち重根を持たない)となるように s をうまく定める(このようなsは存在し、またそれは整数に選べる).

2.  r(x) \mathbb{Q} 上で因数分解する
r(x)=r_1(x)\cdots r_l(x)(各 r_iは \mathbb{Q} 上既約)

3. 各 i(i=1,\cdots ,l) に対し, \mathbb{Q} (\alpha)[x] の元としてgcdをとる (ただしモニックになるように選ぶ)
f_i(x)=\gcd (r_i(x),f(x+s\alpha))

4. すると以下が成り立ち,これが f\in \mathbb{Q} [x] \mathbb{Q} (\alpha) 上で因数分解を与える(ただし1になる因子も許すことにする)
f(x)=f_1(x-s\alpha)\cdots f_l(x-s\alpha)

 

この記事では主にそのPDFの内容をなぞる形になっている。ここで扱いきれなかったガロア理論の話についてはhttps://period-mathematics.hatenablog.com/entry/2019/05/03/181220で詳しく解説している。ただしそこの後半は本稿の内容を把握していないと読めない。


目次

アルゴリズムの証明

これは以下のPDFを参照してほしい。ただしここではf(x)=f_1(x-s\alpha)\cdots f_l(x-s\alpha)となるところまでしか解決できておらず、各f_i(x)\mathbb{Q} (\alpha) 上既約であることが示されていない。もしお分かりになった方がおられましたら是非ご一報ください

追記(2019/10/29):コメントでの情報提供で解決しました、ありがとうございます。

drive.google.com

アルゴリズムの計算の実例

まずはそこで与えられている例を計算してみよう。使用する計算機は代数や数論の計算に強いPARI/GPというものである。これを選んだのは単純に使いやすく、わかりやすく、またなんといってもスマホ(ただしAndroid限定)に対応しているからである(Androidでは「PariDroid」というアプリ名でGoogle Playストアを探せば出てくる、現在では)。PCの場合はhttp://pari.math.u-bordeaux.fr/download.htmlからダウンロード出来る。

これを使ったことのない読者も以下の手順を踏んでいくうちにすぐになれると思う。参考までに、https://sehermitage.web.fc2.com/etc/parigp_func.htmlには基本的なコマンド等が載っている。もっと詳しいコマンドなどについては英語で検索すればPDFなどがヒットするのでそれを参考にするとよいだろう。

 

さて、PDFにて扱われている例は、既約五次多項式

x^5+x^4-4*x^3-3*x^2+3*x+1

の根を \alphaとしたとき \mathbb{Q}(\alpha)上でこれを因数分解するというものである(つまりf_{\alpha}=fというケースである)。これを以下やっていこう。以下の計算機を使う場面では \alpha aで代用している。

 

PARI/GPを使ってアルゴリズムに頼らずに一気に計算する方法

アルゴリズム通りに行く前に、PARI/GPの動作確認も兼ねてこれを一気にやってしまおうと思う。実はPARI/GPには既に代数体上の因数分解のコマンド「factornf*2」が実装されているので手始めにそれを使ってみよう。

 

PARI/GPについて何も知らない読者はここを読まないと次の節は読めない。以下「gp >」と書いてある横にあるものが、その上にある説明を実現するコマンドである。

 

1. まず上の多項式に名前を付ける

gp > f(x)=x^5+x^4-4*x^3-3*x^2+3*x+1 


2.factornfコマンドで \mathbb{Q}(a)上で因数分解する

gp > factornf(f(x),f(a)) 


こうすると以下のように出力される

%3 =
[ x + Mod(-a, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1) 1]
[ x + Mod(-a^2 + 2, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1) 1]
[ x + Mod(-a^3 + 3*a, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1) 1]
[ x + Mod(-a^4 + 4*a^2 - 2, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1) 1]
[x + Mod(a^4 + a^3 - 3*a^2 - 2*a + 1, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1) 1]  

 

とりあえず流れはこれだけである。出力結果を解読しよう。

 

まず右に出ている「1」は指数である。またModの「, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1」はただのmodなのでこれは無視してその前の文字を読んでいくと結局以下のような分解が得られたことを意味している

 

(x - a)(x + (-a^2 + 2))(x + (-a^3 + 3*a))(x + (-a^4 + 4*a^2 - 2))(x + (a^4 + a^3 - 3*a^2 - 2*a + 1))

 

これはPDFの分解とも一致しており、PARI/GPの信用も上がったと思う。

 

計算画面はこのようになる

f:id:period_mathematics:20190504011557p:plain

 

とりあえずこの通りにやってみて分解が得られているかを確認してほしい。

 

無事できているようならこのコマンドの解説を読み進めていこう。

 

二番目の手順で「factornf(f(x),f(a))」と打ったわけだがこれは一体何をしたのかということだが、これは次の例を見れば一発だと思う

 

gp > factornf(x^4-2,y^2-2)
%1 =
[x^2 + Mod(-y, y^2 - 2) 1]

[ x^2 + Mod(y, y^2 - 2) 1]

 

>gpが入力、%1=以下が出力である。例によってmodの部分「, y^2 - 2」を無視すれば、見ての通りこれはx^4-2\mathbb{Q}y^2-2の根を添加して出来る体\mathbb{Q}(\sqrt{2})上で因数分解していることがわかるであろう。

 

このようにfactornf(f(x),g(y))はg(y)の根から作られる体上でf(x)因数分解するコマンドなのである。そうすれば「factornf(f(x),f(a))」はまさに今懸案としている問題の解を与えるコマンドであることがわかるであろう。

 

補足(ここの内容も以下で出てくるので読まれたい)


-「modの部分を無視すれば」というようなことを書いてきたがやはりmodの部分があっては見づらい。 これを解消するのがコマンド「 lift」で、以下のように打つことでmodの部分がきれいに消えて出力される

 

コマンド

gp > lift(factornf(f(x),f(a)))

 

出力
%3 =
[ x - a 1]

[ x + (-a^2 + 2) 1]

[ x + (-a^3 + 3*a) 1]

[ x + (-a^4 + 4*a^2 - 2) 1]

[x + (a^4 + a^3 - 3*a^2 - 2*a + 1) 1]

 

この考察からもliftは係数がmodタイプのとき、元に戻す(係数をその代表元に置き換える)操作をするコマンドであることがわかる。

 


アルゴリズム通りに計算

さて、それでは本題に入る。

 

1. 多項式に名前を付ける

gp > f(x)=x^5+x^4-4*x^3-3*x^2+3*x+1
%1 = (x)->x^5+x^4-4*x^3-3*x^2+3*x+1


2. aを mod f(a)で還元する

gp > a=Mod(a,f(a))
%2 = Mod(a, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1)


3. fを自明な因子 x-aで割る

gp > lift(f(x)/(x-a))
%3 = x^4 + (a + 1)*x^3 + (a^2 + a - 4)*x^2 + (a^3 + a^2 - 4*a - 3)*x + (a^4 + a^3 - 4*a^2 - 3*a + 3)
(これは f \mathbb{Q}(a)係数多項式と認識させることが出来るという効果もある)


4.今の結果を新しく h(x,a)と名前を付ける

gp > h(x,a)=x^4 + (a + 1)*x^3 + (a^2 + a - 4)*x^2 + (a^3 + a^2 - 4*a - 3)*x + (a^4 + a^3 - 4*a^2 - 3*a + 3)

%4 = (x,a)->x^4+(a+1)*x^3+(a^2+a-4)*x^2+(a^3+a^2-4*a-3)*x+(a^4+a^3-4*a^2-3*a+3)


5.終結式を計算する

gp > polresultant(h(x+b,b),f(b),b)

%5 =x^20 - 44*x^18 + 792*x^16 - 7623*x^14 + 43076*x^12 - 147983*x^10 + 310123*x^8 - 388652*x^6 + 278179*x^4 - 102487*x^2 + 14641
(文字を aから bに変えているのは、今は aは手順2の影響でmodで還元されてしまっているから通常の変数の役割を果たせないからである(エラーが出る))


6.これを因数分解する

gp > factor(%5)

%6 =
[x^5 - 11*x^3 - 11*x^2 + 11*x + 11 1]
[ x^5 - 11*x^3 + 22*x - 11 1]
[ x^5 - 11*x^3 + 22*x + 11 1]
[x^5 - 11*x^3 + 11*x^2 + 11*x - 11 1]


7.その中の因子と「 \mathbb{Q}(a)内で」gcdをとる*3が使えはする。))

gp > gcd(h(x+a,a),x^5-11*x^3+22*x+11)
%7 =Mod(5*a^4 - 16*a^3 - 13*a^2 + 29*a + 9, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1)*x + Mod(-30*a^4 + 9*a^3 + 61*a^2 - 8*a - 7, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1)


8.モニックにする

gp > (%7)/(5*a^4-16*a^3-13*a^2+29*a+9)
%8 = Mod(1, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1)*x + Mod(-a^4 + 4*a^2 + a - 2, a^5 + a^4 - 4*a^3 - 3*a^2 + 3*a + 1)(ただし「%7」はここでは直前の結果を表している)*4


よって-a^4+4*a^2+a-2が因子の一つ。他の因子も同様。

 

これを実際に行なった様子は

f:id:period_mathematics:20190504085243p:plain

 

まとめ

PARI/GPの計算においては既にコマンドが実装されているため実用上はこのアルゴリズムに頼る必要がないのはお察しの通りだと思う。

 

ただ代数体上の因数分解というのは基本的で重要な話題に思うので、このような理論的側面を追うのはいつか重要になってくるのではないかと思う。

 

とりあえずPARI/GPの扱いに慣れることも目的の一つなので是非手順を追って計算してみてほしい。

 

 

 

*1:以下の議論において \mathbb{Q} を全て標数0の体 F で置き換えることで F 上の多項式に対しても全く同様の結果が成り立つ.

*2:Tragerの方法によっているらしい

*3:もともと筆者は例えばここならgcd(h(x+a,a),x^5-11*x^3+22*x+11+0*a)というように「+0*a」という項を付け加えて \mathbb{Q}(a)係数だと認識させていたのだがどうやら手順3の時点でそれは達成されていたようだったのでその必要はなかった。この考えでfactornfの代わりにlift( factor (f(x)+0*a

*4:この記法は関数を扱う場合少し注意が必要で、例えば手順4で「 h(x,a)=%3」とやっても、関数として機能してくれない。例えばh(1,2)などの具体値を計算しようとすればわかる