2025年02月21日更新
[1] Magma は溶岩のマグマではなく,代数学のマグマから来ています.オーストラリアのシドニー大学で開発されました.研究者用のソフトで,個人購入さえできませんが幸いなことに Web上で フリーで使用できる Magma Calculator が公開されています.計算時間は120秒以内でそれは余り問題ないですが,問題はファイルが保存できないことです.仕方ないので私はコピペして text file として保存してますが,はっきり言って使いづらいです.でも無料のソフトに関して余り文句を言うのも要求しすぎですね.私としては(あまり高くなければ) 有料でも売って欲しいのですが...Magmaに関しては 日本語はおろか英語の書籍もないようですが,pdfの形で巨大なManual(英語-4000ページ)が公開されています.しかし何分研究者用なので,非常に読みづらいです.(4000ページなんてすごいですね.これをうっかり印刷された方もいらっしゃるようです.) 以下,少しですが,私も参考にしているサイトをご紹介します.
[2]私はMagmaは時々しか使っていないので,入門未満ですが,上記のサイトの助けを借りて,ガロア群を求めるプログラムを作成することができました.(「作成」というより「見つけた」というべきですが)
先ずは,f0(x)=x5+1, f1(x)=x5-10x3+5x2+10x+1, f2(x)=x5-5x+12, f3(x)=x5x+15x+12 のガロア群を求めるには次の様に Calculator に入力します.文は必ず「;」で区切ります.(最後の文のみは付けなくとも問題ないです.)最初の1行は「xを有理数係数多項式の変数と定める」という意味です.さらにxの多項式に名前をつけることもできます.(R_<x>
などとします.) Galois群を求めるには GaloisGroup(f)を使うだけです.またご覧のようにコンマで区切って2つ以上の式を出力させることもできます.f0(x)でおわかりのように 既約多項式でなくともGalois群を求めることができます.(ソフトによっては既約多項式でないと求められないものもあります.)
_<x>:=PolynomialAlgebra(Rationals()); f0:=x^5+1; f1:=x^5-10*x^3+5*x^2+10*x+1; f2:=x^5-5*x+12; f3:=x^5+15*x+12; f0,GaloisGroup(f0); f1,GaloisGroup(f1); f2,GaloisGroup(f2); f3,GaloisGroup(f3); |
出力は以下の様になります.計算時間は 0.16秒です.爆速です.蛇足ですが,右列は私なりの簡単な説明です.しかし左列[ ]内はよく分かりません.原始元による表現では無いと思います.(Galois群をGalと書いてます.)
x^5 + 1 Permutation group acting on a set of cardinality 5 Order = 4 = 2^2 (1, 2)(3, 4) (1, 3, 2, 4) [ 2 + O(11), -5 + O(11), -4 + O(11), -3 + O(11), -1 + O(11) ] GaloisData over Z_11 |
GalはS5の部分群です. 位数は4. Gal=<(1,2)(3,4),(1,3,2,4> 生成元が重複しています. Gal=<(1,3,2,4)>(=C4 ) |
x^5 - 10*x^3 + 5*x^2 + 10*x + 1 Permutation group acting on a set of cardinality 5 Order = 5 (1, 2, 5, 3, 4) [ 61194514 + O(43^5), 55094113 + O(43^5), -19686924 + O(43^5), -72228053 + O(43^5), -24373650 + O(43^5) ] GaloisData over Z_43 |
GalはS5の部分群です. 位数は5. Gal=<(1,2,5,3,4)>(=C5 ) |
x^5 - 5*x + 12 Permutation group acting on a set of cardinality 5 Order = 10 = 2 * 5 (1, 4)(2, 5) (1, 3)(4, 5) [ -404893*$.1 - 306490 + O(17^5), 404893*$.1 + 492370 + O(17^5), 515621*$.1 + 145929 + O(17^5), -515621*$.1 + 415135 + O(17^5), 672913 + O(17^5) ] GaloisData over Z_17 |
GalはS5の部分群です. 位数は10. Gal=<(1,4)(2,5),(1,3)(4,5)> 少し分かりずらいですが D5と同型です |
x^5 + 15*x + 12 Permutation group acting on a set of cardinality 5 Order = 20 = 2^2 * 5 (2, 4, 5, 3) (2, 5)(3, 4) (1, 3, 5, 2, 4) [ -69204*$.1 + 79221 + O(11^5), 62573 + O(11^5), 69204*$.1 + 80496 + O(11^5), -13012*$.1 + 4364 + O(11^5), 13012*$.1 - 65603 + O(11^5) ] GaloisData over Z_11 |
GalはS5の部分群です. 位数は20. Gal=<2, 4, 5, 3),(2, 5)(3, 4),(1, 3, 5, 2, 4)> 少し分かりずらいですが F20と同型です |
[3]Magmaは for文, if文などの制御文も非常に豊富に持っています.それを使って f(x)=x5+ax3+bx2+cx+d (-1<a,b,c<4 ,0<d<6 a,b,c,d整数)のGalois群(320個!)を一度に計算させます.(d>0の時しか考えていないのは f(x)=x5+ax3+bx2+cx+dとg(x)=x5+ax3-bx2+cx-dのGalois群が一致するからです.)
_<x>:=PolynomialAlgebra(Rationals()); for i in {0..3} do for j in {0..3} do for k in {0..3} do for m in {1..5} do f:=x^5+i*x^3+j*x^2+k*x+m; g:=GaloisGroup(f); if Order(g) le 60 then print f, g; end if; end for; end for; end for; end for; |
読みやすさのためインデントを付けていますが,SageMathやPythonと異なり,必須ではありません.また位数が60より小さい場合しか出力させていません.結果は次のようになります.
x^5 + 1 Permutation group g acting on a set of cardinality 5 Order = 4 = 2^2 (1, 2)(3, 4) (1, 4, 2, 3) |
x^5 + 2 Permutation group g acting on a set of cardinality 5 Order = 20 = 2^2 * 5 (1, 2, 5, 4) (1, 5)(2, 4) (1, 2, 3, 4, 5) |
(中略) |
x^5 + 2*x^3 + x^2 + 2*x + 3 Permutation group g acting on a set of cardinality 5 Order = 10 = 2 * 5 (1, 3)(2, 4) (1, 2)(3, 5) |
(中略) |
x^5 + 3*x^3 + 3*x^2 + 3*x + 4 Permutation group g acting on a set of cardinality 5 Order = 24 = 2^3 * 3 (1, 2, 3, 4) (1, 2) |
今度は[ ]に入った文は出力されませんでした.多分量が多すぎたのでしょう.なお時間は
5.049秒でした.制限時間は120秒なので余裕ですね.ただあまり関数の数を多くしすぎると,今度は出力が大きくなりすぎて「ぐるぐる渦巻き」がでます.面白いのはGalois群の位数が24の群もあることです.しかしこれは
Q上既約ではありません.(既約か否かを調べるコマンドがわかりませんでした.)
ここで入力したコマンドを ここ (text ファイル) にまとめておきました.
SageMath でも Galois群は求まります.しかももっと沢山求まります.ぜひそちらもお読み下さい.
![]() |
![]() |