2010年02月15日

GAPで遊ぼう

 GAP(Groups, Algorithms, Programming )というのは群論の計算ソフトです。
 ほほう。それは覗いてみよう。

 「GAP、出でよ。」

gap1.png

5次対称群


 一般の5次方程式の対応する群は5次対称群です。
 S5を5次対称群とします。 

gap> S5:=SymmetricGroup(5);
Sym( [ 1 .. 5 ] )

 位数は如何ほど?
gap> Order(S5);
120

 むう、5の階乗(5!=120 )であった。しからばその元を拝見いたす。
gap> Elements(S5);
[ (), (4,5), (3,4), (3,4,5), (3,5,4), (3,5), (2,3), (2,3)(4,5), (2,3,4),
(2,3,4,5), (2,3,5,4), (2,3,5), (2,4,3), (2,4,5,3), (2,4), (2,4,5),
(2,4)(3,5), (2,4,3,5), (2,5,4,3), (2,5,3), (2,5,4), (2,5), (2,5,3,4),
(2,5)(3,4), (1,2), (1,2)(4,5), (1,2)(3,4), (1,2)(3,4,5), (1,2)(3,5,4),
(1,2)(3,5), (1,2,3), (1,2,3)(4,5), (1,2,3,4), (1,2,3,4,5), (1,2,3,5,4),
(1,2,3,5), (1,2,4,3), (1,2,4,5,3), (1,2,4), (1,2,4,5), (1,2,4)(3,5),
(1,2,4,3,5), (1,2,5,4,3), (1,2,5,3), (1,2,5,4), (1,2,5), (1,2,5,3,4),
(1,2,5)(3,4), (1,3,2), (1,3,2)(4,5), (1,3,4,2), (1,3,4,5,2), (1,3,5,4,2),
(1,3,5,2), (1,3), (1,3)(4,5), (1,3,4), (1,3,4,5), (1,3,5,4), (1,3,5),
(1,3)(2,4), (1,3)(2,4,5), (1,3,2,4), (1,3,2,4,5), (1,3,5,2,4),
(1,3,5)(2,4), (1,3)(2,5,4), (1,3)(2,5), (1,3,2,5,4), (1,3,2,5),
(1,3,4)(2,5), (1,3,4,2,5), (1,4,3,2), (1,4,5,3,2), (1,4,2), (1,4,5,2),
(1,4,2)(3,5), (1,4,3,5,2), (1,4,3), (1,4,5,3), (1,4), (1,4,5), (1,4)(3,5),
(1,4,3,5), (1,4,2,3), (1,4,5,2,3), (1,4)(2,3), (1,4,5)(2,3), (1,4)(2,3,5),
(1,4,2,3,5), (1,4,2,5,3), (1,4,3)(2,5), (1,4)(2,5,3), (1,4,3,2,5),
(1,4)(2,5), (1,4,2,5), (1,5,4,3,2), (1,5,3,2), (1,5,4,2), (1,5,2),
(1,5,3,4,2), (1,5,2)(3,4), (1,5,4,3), (1,5,3), (1,5,4), (1,5), (1,5,3,4),
(1,5)(3,4), (1,5,4,2,3), (1,5,2,3), (1,5,4)(2,3), (1,5)(2,3), (1,5,2,3,4),
(1,5)(2,3,4), (1,5,3)(2,4), (1,5,2,4,3), (1,5,3,2,4), (1,5)(2,4,3),
(1,5,2,4), (1,5)(2,4) ]
 

 流石に120は多いなあ。
 (そういえばルフィー二という方は5次方程式に取り組むのに、これを全部書き下してたという噂を聞いた気がしたけど確認してないです。)
これの群表を書いたら120×120になりますね。

 S5は可解でござるか?
gap> IsSolvable(S5);
false

 うわさ通り「否」でござる。ならば、その組成列は?

gap> DisplayCompositionSeries(S5);
G (2 gens, size 120)
| Z(2)
S (3 gens, size 60)
| A(5) ~ A(1,4) = L(2,4) ~ B(1,4) = O(3,4) ~ C(1,4) = S(2,4) ~ 2A(1,4) = U(2,\
4) ~ A(1,5) = L(2,5) ~ B(1,5) = O(3,5) ~ C(1,5) = S(2,5) ~ 2A(1,5) = U(2,5)
1 (0 gens, size 1)

 見事ぢゃ。LとかUとかは何だかわからんがA(5)とやらと同型な何かでござろう。
 今ひとつシンプルな表示は無いかね。
gap> CompositionSeries(S5);
[ Sym( [ 1 .. 5 ] ), Alt( [ 1 .. 5 ] ), Group(()) ]
gap>  

  S5の正規部分群は位数60の5次交代群。そのまた正規部分群は単位元しか無いと…。

5次交代群


 ならば5次交代群でもマネしてみよう。
gap> A5:=AlternatingGroup(5);
Alt( [ 1 .. 5 ] )
 コマンドは一行に並べてもいい。
gap> Order(A5);Elements(A5);
60
[ (), (3,4,5), (3,5,4), (2,3)(4,5), (2,3,4), (2,3,5), (2,4,3), (2,4,5),
(2,4)(3,5), (2,5,3), (2,5,4), (2,5)(3,4), (1,2)(4,5), (1,2)(3,4),
(1,2)(3,5), (1,2,3), (1,2,3,4,5), (1,2,3,5,4), (1,2,4,5,3), (1,2,4),
(1,2,4,3,5), (1,2,5,4,3), (1,2,5), (1,2,5,3,4), (1,3,2), (1,3,4,5,2),
(1,3,5,4,2), (1,3)(4,5), (1,3,4), (1,3,5), (1,3)(2,4), (1,3,2,4,5),
(1,3,5,2,4), (1,3)(2,5), (1,3,2,5,4), (1,3,4,2,5), (1,4,5,3,2), (1,4,2),
(1,4,3,5,2), (1,4,3), (1,4,5), (1,4)(3,5), (1,4,5,2,3), (1,4)(2,3),
(1,4,2,3,5), (1,4,2,5,3), (1,4,3,2,5), (1,4)(2,5), (1,5,4,3,2), (1,5,2),
(1,5,3,4,2), (1,5,3), (1,5,4), (1,5)(3,4), (1,5,4,2,3), (1,5)(2,3),
(1,5,2,3,4), (1,5,2,4,3), (1,5,3,2,4), (1,5)(2,4) ]

 位数60。これがガロアの言う「5.4.3」

 位数や元;はこう書いても同じみたい。
gap> Size(A5);List(A5);
60
[ (), (3,4,5), (3,5,4), (2,3)(4,5), (2,3,4), (2,3,5), (2,4,3), (2,4,5),
(2,4)(3,5), (2,5,3), (2,5,4), (2,5)(3,4), (1,2)(4,5), (1,2)(3,4),
(1,2)(3,5), (1,2,3), (1,2,3,4,5), (1,2,3,5,4), (1,2,4,5,3), (1,2,4),
(1,2,4,3,5), (1,2,5,4,3), (1,2,5), (1,2,5,3,4), (1,3,2), (1,3,4,5,2),
(1,3,5,4,2), (1,3)(4,5), (1,3,4), (1,3,5), (1,3)(2,4), (1,3,2,4,5),
(1,3,5,2,4), (1,3)(2,5), (1,3,2,5,4), (1,3,4,2,5), (1,4,5,3,2), (1,4,2),
(1,4,3,5,2), (1,4,3), (1,4,5), (1,4)(3,5), (1,4,5,2,3), (1,4)(2,3),
(1,4,2,3,5), (1,4,2,5,3), (1,4,3,2,5), (1,4)(2,5), (1,5,4,3,2), (1,5,2),
(1,5,3,4,2), (1,5,3), (1,5,4), (1,5)(3,4), (1,5,4,2,3), (1,5)(2,3),
(1,5,2,3,4), (1,5,2,4,3), (1,5,3,2,4), (1,5)(2,4) ]

 A5は単純群なんですよね。

gap> IsSimple(A5);
true

 まことです。
 組成列は?

gap> DisplayCompositionSeries(A5);
G (2 gens, size 60)
| A(5) ~ A(1,4) = L(2,4) ~ B(1,4) = O(3,4) ~ C(1,4) = S(2,4) ~ 2A(1,4) = U(2,\
4) ~ A(1,5) = L(2,5) ~ B(1,5) = O(3,5) ~ C(1,5) = S(2,5) ~ 2A(1,5) = U(2,5)
1 (0 gens, size 1)
gap> CompositionSeries(A5);
[ Alt( [ 1 .. 5 ] ), Group(()) ]
gap>

 単純群なんだから単位元以外正規部分群を持たない。
 数の世界での素数(自身を除く約数が1しか無い)の話と似てますね。

 それからS5とかA5のSとかAとかは
 ”Symmetric” や ”Alternating”
の頭文字です。意外と書いてなかったりします。

4次対称群


 4次方程式までは解の公式があるのでした。
 S4は4次対称群として。
gap> S4:=SymmetricGroup(4);
Sym( [ 1 .. 4 ] )

 位数と元を表示してくだされ。
gap> Order(S4);Elements(S4);
24
[ (), (3,4), (2,3), (2,3,4), (2,4,3), (2,4), (1,2), (1,2)(3,4), (1,2,3),
(1,2,3,4), (1,2,4,3), (1,2,4), (1,3,2), (1,3,4,2), (1,3), (1,3,4),
(1,3)(2,4), (1,3,2,4), (1,4,3,2), (1,4,2), (1,4,3), (1,4), (1,4,2,3),
(1,4)(2,3) ]
 

 4!=24 ですね。
 聞くまでも無いでしょうが、可解ですか?
gap> IsSolvable(S4);
true

 可解であるぞよ。

組成列は?
gap> DisplayCompositionSeries(S4);
G (4 gens, size 24)
| Z(2)
S (3 gens, size 12)
| Z(3)
S (2 gens, size 4)
| Z(2)
S (1 gens, size 2)
| Z(2)
1 (0 gens, size 1)
gap> CompositionSeries(S4);
[ Group([ (3,4), (2,4,3), (1,4)(2,3), (1,3)(2,4) ]),
Group([ (2,4,3), (1,4)(2,3), (1,3)(2,4) ]),
Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,3)(2,4) ]), Group(()) ]
gap>

 おお、表示が綺麗だ。

 位数を並べると
  24 -> 12 -> 4 -> 2 ->1

 商群の位数は
  2 , 3 , 2 , 2

 これが解の公式に現れるべき根と1対1に対応しています。
つまり、4次方程式の解の公式は平方根が3回と3乗根が1回絡んでいる事が読み取れるわけですね。
 

インストールについて

有限群の広場さんにありましたGAPの記事を参考にあれこれ覗いてみました。どうもありがとうございます。
 また、こちらにWindows & Mac 版インストーラーもあるようです(私は動作未確認です)

 私の手持ちの ubuntu Linux 9.10 の場合は
  システム=>システム管理=>Synapticパッケージマネージャー =>クイック検索で”GAP”
 =>”GAP”の項目にチェックを入れて=>摘要 
 でインストールできました。



 おっと。終了操作を忘れてはいけません。
 「ゴクロウデアッタ。」
gap> quit;
ketaru@linux:

                      つづく
posted by ketaru at 09:40| Comment(0) | TrackBack(0) | ソフトウェア::数学