5种8阶群、5种12阶群、15种24阶群、52种48阶群(2013-01-29 17:03、2013-03-23 21:36)(附GAP软件的使用)

整合了《8阶二面体群D_4、6阶二面体群D_3、克莱因域F_4、低阶有限群表示为有限域上的典型群的C++程序实现》、《5种12阶群、15种24阶群的C++程序实现(附GAP软件的使用)》这两篇日志。
20151101猜想:有理数域上的分圆扩张的伽罗瓦群不可能是GAP4[24,2]=C_24。或者说对任意n,(Z/nZ)^*≠C_24。
gap> n:=24;;for i in [n..500] do Ui:=Units(Integers mod i);;gid:=IdGroup(Ui);if n=gid[1] then Print(i,":",gid,"\n");fi;od;
35:[ 24, 9 ]
----24阶交换群GAP4[24,9]=C_6×C_4=U35=U39群元的阶----
//1个1阶元,3个2阶元,2个3阶元,4个4阶元,6个6阶元,8个12阶元
39:[ 24, 9 ]
45:[ 24, 9 ]
52:[ 24, 9 ]
56:[ 24, 15 ]
----24阶交换群GAP4[24,15]=C_6×K_4=U84群元的阶----
//1个1阶元,7个2阶元,2个3阶元,14个6阶元
70:[ 24, 9 ]
72:[ 24, 15 ]
78:[ 24, 9 ]
84:[ 24, 15 ]
90:[ 24, 9 ]
两种12阶Abel群的表示:
gap> n:=12;;for i in [n..500] do Ui:=Units(Integers mod i);;gid:=IdGroup(Ui);if n=gid[1] then Print(i,":",gid,"\n");fi;od;
13:[ 12, 2 ]
GAP4[ 12, 2 ]=C_12
21:[ 12, 5 ]
GAP4[ 12, 5 ]=C2C2C3=U21=U28有1个1阶元,3个2阶元,2个3阶元,0个4阶元,6个6阶元,0个12阶元
26:[ 12, 2 ]
28:[ 12, 5 ]
36:[ 12, 5 ]
42:[ 12, 5 ]
gap> Factors(12);
[ 2, 2, 3 ]
4次交錯群/交代群A_4没有4阶元,|Syl_2(A_4)|=4,Syl_2(A_4)=K_4!=C_4,K_4是A_4的正规子群
gap> for n in [1..5] do g:=SmallGroup(12,n);;gid:=StructureDescription(g);Print(gid,"是否超可解:",IsSupersolvableGroup(g));s:=Elements(g);;sl2:=SylowSubgroup(g,2);;Print(IdGroup(sl2),IsSubnormal(g,sl2));sl3:=SylowSubgroup(g,3);;Print(IdGroup(sl3),IsSubnormal(g,sl3),"\n");od;
C3 : C4是否超可解:true[ 4, 1 ]false[ 3, 1 ]true
C12是否超可解:true[ 4, 1 ]true[ 3, 1 ]true
A4是否超可解:false[ 4, 2 ]true[ 3, 1 ]false
D12是否超可解:true[ 4, 2 ]false[ 3, 1 ]true
C6 x C2是否超可解:true[ 4, 2 ]true[ 3, 1 ]true
20151006补充:定理:52种48阶群与它们的群元阶的分布、换位子群、自同构群/正规子群的个数一一对应[ 1, 2, 3, 4, 6, 8, 12, 16, 24, 48]
Group GAP4(48,1) [C3 : C16] 1,1,2,2,2,4,4,24,8,0,
Group GAP4(48,2) [C48] 1,1,2,2,2,4,4,8,8,16,
Group GAP4(48,3) [(C4 x C4) : C3] 1,3,32,12,0,0,0,0,0,0,
Group GAP4(48,4) [C8 x S3] 1,7,2,8,2,16,4,0,8,0,非交换群,换位子群是C_3
Group GAP4(48,5) [C24 : C2] 1,7,2,8,2,16,4,0,8,0,交换群,换位子群是C_6
Group GAP4(48,6) [C24 : C2] 1,13,2,14,2,4,4,0,8,0,
Group GAP4(48,7) [D48] 1,25,2,2,2,4,4,0,8,0,
Group GAP4(48,8) [C3 : Q16] 1,1,2,26,2,4,4,0,8,0,
Group GAP4(48,9) [C2 x (C3 : C8)] 1,3,2,4,6,24,8,0,0,0,换位子群是C_3
Group GAP4(48,10) [(C3 : C8) : C2] 1,3,2,4,6,24,8,0,0,0,换位子群是C_6
Group GAP4(48,11) [C4 x (C3 : C4)] 1,3,2,28,6,0,8,0,0,0,换位子群是C_3,中心是GAP4[8,2],正规子群个数为23
gap> IdGroup(DerivedSubgroup(SmallGroup(48,11)));
[ 3, 1 ]
gap> IdGroup(AutomorphismGroup(SmallGroup(48,11)));
[ 192, 1147 ]
Group GAP4(48,12) [(C3 : C4) : C4] 1,3,2,28,6,0,8,0,0,0,换位子群是C_6,中心是克莱因四元群GAP4[4,2],正规子群个数为17
gap> IdGroup(DerivedSubgroup(SmallGroup(48,12)));
[ 6, 2 ]
gap> IdGroup(AutomorphismGroup(SmallGroup(48,12)));
[ 96, 230 ]
Group GAP4(48,13) [C12 : C4] 1,3,2,28,6,0,8,0,0,0,换位子群是C_6,中心是克莱因四元群GAP4[4,2],正规子群个数为19
gap> IdGroup(DerivedSubgroup(SmallGroup(48,13)));
[ 6, 2 ]
gap> IdGroup(AutomorphismGroup(SmallGroup(48,13)));
[ 192, 1147 ]
Group GAP4(48,14) [(C12 x C2) : C2] 1,15,2,16,6,0,8,0,0,0,
Group GAP4(48,15) [(C3 x D8) : C2] 1,17,2,2,10,12,4,0,0,0,
Group GAP4(48,16) [(C3 : C8) : C2] 1,5,2,14,10,12,4,0,0,0,
Group GAP4(48,17) [(C3 x Q8) : C2] 1,13,2,6,2,12,12,0,0,0,
Group GAP4(48,18) [C3 : Q16] 1,1,2,18,2,12,12,0,0,0,
Group GAP4(48,19) [(C2 x (C3 : C4)) : C2] 1,7,2,24,14,0,0,0,0,0,
Group GAP4(48,20) [C12 x C4] 1,3,2,12,6,0,24,0,0,0,换位子群是C_1
Group GAP4(48,21) [C3 x ((C4 x C2) : C2)] 1,7,2,8,14,0,16,0,0,0,
Group GAP4(48,22) [C3 x (C4 : C4)] 1,3,2,12,6,0,24,0,0,0,换位子群是C_2
Group GAP4(48,23) [C24 x C2] 1,3,2,4,6,8,8,0,16,0,换位子群是C_1
Group GAP4(48,24) [C3 x (C8 : C2)] 1,3,2,4,6,8,8,0,16,0,换位子群是C_2
Group GAP4(48,25) [C3 x D16] 1,9,2,2,18,4,4,0,8,0,
Group GAP4(48,26) [C3 x QD16]1,5,2,6,10,4,12,0,8,0,
Group GAP4(48,27) [C3 x Q16] 1,1,2,10,2,4,20,0,8,0,
Group GAP4(48,28) [C2 . S4 = SL(2,3) . C2] 1,1,8,18,8,12,0,0,0,0,
双八面体群(binary octahedral group)2O有1个1阶元,1个2阶元,8个3阶元,18个4阶元,8个6阶元,12个8阶元,0个12阶元,0个16阶元,0个24阶元,0个48阶元
Group GAP4(48,29) [GL(2,3)] 1,13,8,6,8,12,0,0,0,0,
Group GAP4(48,30) [A4 : C4] 1,7,8,24,8,0,0,0,0,0,
Group GAP4(48,31) [C4 x A4] 1,7,8,8,8,0,16,0,0,0,,换位子群是GAP4[4,2]
Group GAP4(48,32) [C2 x SL(2,3)] 1,3,8,12,24,0,0,0,0,0,
Group GAP4(48,33) [SL(2,3) : C2] 1,7,8,8,8,0,16,0,0,0,换位子群是GAP4[8,4]
Group GAP4(48,34) [C2 x (C3 : Q8)]1,3,2,28,6,0,8,0,0,0,换位子群是C_6,中心是克莱因四元群GAP4[4,2],正规子群个数为23
gap> IdGroup(DerivedSubgroup(SmallGroup(48,34)));
[ 6, 2 ]
gap> IdGroup(AutomorphismGroup(SmallGroup(48,34)));
[ 384, 12882 ]
Group GAP4(48,35) [C2 x C4 x S3] 1,15,2,16,6,0,8,0,0,0,换位子群是C_3
Group GAP4(48,36) [C2 x D24] 1,27,2,4,6,0,8,0,0,0,
Group GAP4(48,37) [(C12 x C2) : C2] 1,15,2,16,6,0,8,0,0,0,换位子群是C_6
Group GAP4(48,38) [D8 x S3]1,23,2,8,10,0,4,0,0,0,
Group GAP4(48,39) [(C2 x (C3 : C4)) : C2] 1,11,2,20,10,0,4,0,0,0,
Group GAP4(48,40) [Q8 x S3] 1,7,2,24,2,0,12,0,0,0,
Group GAP4(48,41) [(C4 x S3) : C2]1,19,2,12,2,0,12,0,0,0,
Group GAP4(48,42) [C2 x C2 x (C3 : C4)]1,7,2,24,14,0,0,0,0,0,
Group GAP4(48,43) [C2 x ((C6 x C2) : C2)]1,19,2,12,14,0,0,0,0,0,
Group GAP4(48,44) [C12 x C2 x C2]1,7,2,8,14,0,16,0,0,0,换位子群是C_1
Group GAP4(48,45) [C6 x D8]1,11,2,4,22,0,8,0,0,0,
Group GAP4(48,46) [C6 x Q8]1,3,2,12,6,0,24,0,0,0,
Group GAP4(48,47) [C3 x ((C4 x C2) : C2)]1,7,2,8,14,0,16,0,0,0,换位子群是C_2
Group GAP4(48,48) [C2 x S4]1,19,8,12,8,0,0,0,0,0,
Group GAP4(48,49) [C2 x C2 x A4]1,15,8,0,24,0,0,0,0,0,
Group GAP4(48,50) [(C2 x C2 x C2 x C2) : C3]1,15,32,0,0,0,0,0,0,0,
Group GAP4(48,51) [C2 x C2 x C2 x S3]1,31,2,0,14,0,0,0,0,0,
Group GAP4(48,52) [C6 x C2 x C2 x C2]1,15,2,0,30,0,0,0,0,0,
gap> List(DerivedSeriesOfGroup(SmallGroup(48,4)),IdGroup);
[ [ 48, 4 ], [ 3, 1 ], [ 1, 1 ] ]
gap> List(DerivedSeriesOfGroup(SmallGroup(48,5)),IdGroup);
[ [ 48, 5 ], [ 6, 2 ], [ 1, 1 ] ]
gap> IdGroup(AutomorphismGroup(SmallGroup(48,10)));
[ 96, 209 ]
gap> IdGroup(AutomorphismGroup(SmallGroup(48,9)));
[ 96, 209 ]
gap> List(DerivedSeriesOfGroup(SmallGroup(48,10)),IdGroup);
[ [ 48, 10 ], [ 6, 2 ], [ 1, 1 ] ]
gap> List(DerivedSeriesOfGroup(SmallGroup(48,9)),IdGroup);
[ [ 48, 9 ], [ 3, 1 ], [ 1, 1 ] ]
gap> List(DerivedSeriesOfGroup(SmallGroup(48,11)),IdGroup);                                                             [ [ 48, 11 ], [ 3, 1 ], [ 1, 1 ] ]
gap> List(DerivedSeriesOfGroup(SmallGroup(48,12)),IdGroup);                                                             [ [ 48, 12 ], [ 6, 2 ], [ 1, 1 ] ]
2014-6-2补充:
GAP4[ 48, 29 ]=GL(2,3)有1个1阶元,13个2阶元,8个3阶元,6个4阶元,8个6阶元,12个8阶元,0个12阶元,0个16阶元,0个24阶元,0个48阶元
GAP4[ 48, 7 ]=O_2(F_23)有1个1阶元,25个2阶元,2个3阶元,2个4阶元,2个6阶元,4个8阶元,4个12阶元,0个16阶元,8个24阶元,0个48阶元
C48有1个1阶元,1个2阶元,2个3阶元,2个4阶元,2个6阶元,4个8阶元,4个12阶元,8个16阶元,8个24阶元,16个48阶元
gap> IdGroup(GO(-1,2,23));
[ 48, 7 ]
gap> IdGroup(GO(1,2,23));
[ 44, 3 ]
gap> G:=SmallGroup(48,7);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,16,24,48];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 48 with 5 generators>
[ 48, 7 ]
[ 1, 2, 8, 4, 2, 3, 2, 2, 2, 2, 8, 8, 24, 4, 12, 6, 3, 2, 2, 2, 2, 2, 2, 2, 8, 24, 24, 24, 12, 12, 6, 2, 2, 2,
  2, 2, 2, 2, 24, 24, 24, 12, 2, 2, 2, 2, 24, 2 ]
[ 1, 2, 3, 4, 6, 8, 12, 16, 24, 48 ]
1,25,2,2,2,4,4,0,8,0,
gap> G:=GL(2,3);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,16,24,48];for i in M do Print(Size(Positions(L,i)),","); od;
GL(2,3)
[ 48, 29 ]
[ 2, 8, 8, 4, 6, 3, 4, 6, 3, 2, 8, 8, 1, 2, 3, 2, 3, 2, 3, 2, 8, 4, 6, 8, 3, 2, 6, 8, 8, 4, 2, 2, 2, 6,
  2, 6, 2, 6, 8, 4, 3, 8, 2, 6, 3, 8, 8, 4 ]
[ 1, 2, 3, 4, 6, 8, 12, 16, 24, 48 ]
1,13,8,6,8,12,0,0,0,0,
gap> G:=SmallGroup(48,34);IdGroup(G);cl:=NormalSubgroups(G);;len:=Size(cl);for i in [1..len] do Print(IdGroup(cl[i]),","); od;
<pc group of size 48 with 5 generators>
[ 48, 34 ]
27
[ 48, 34 ],[ 24, 4 ],[ 24, 4 ],[ 24, 7 ],[ 24, 9 ],[ 24, 4 ],[ 24, 7 ],[ 24, 4 ],[ 12, 2 ],[ 12, 1 ],[ 12, 2 ],
[ 12, 1 ],[ 12, 5 ],[ 12, 1 ],[ 12, 1 ],[ 6, 2 ],[ 6, 2 ],[ 6, 2 ],[ 8, 2 ],[ 4, 1 ],[ 4, 1 ],[ 4, 2 ],[ 2, 1 ],
[ 2, 1 ],[ 2, 1 ],[ 3, 1 ],[ 1, 1 ],
gap> G:=SmallGroup(48,11);IdGroup(G);cl:=NormalSubgroups(G);;len:=Size(cl);for i in [1..len] do Print(IdGroup(cl[i]),","); od;
<pc group of size 48 with 5 generators>
[ 48, 11 ]
23
[ 48, 11 ],[ 24, 9 ],[ 24, 7 ],[ 24, 7 ],[ 12, 1 ],[ 12, 1 ],[ 12, 5 ],[ 12, 2 ],[ 12, 2 ],[ 12, 1 ],[ 12, 1 ],
[ 6, 2 ],[ 6, 2 ],[ 6, 2 ],[ 8, 2 ],[ 4, 2 ],[ 4, 1 ],[ 4, 1 ],[ 2, 1 ],[ 2, 1 ],[ 2, 1 ],[ 3, 1 ],[ 1, 1 ],
gap> G:=SmallGroup(48,12);IdGroup(G);cl:=NormalSubgroups(G);;len:=Size(cl);for i in [1..len] do Print(IdGroup(cl[i]),","); od;
<pc group of size 48 with 5 generators>
[ 48, 12 ]
17
[ 48, 12 ],[ 24, 9 ],[ 24, 7 ],[ 24, 7 ],[ 12, 1 ],[ 12, 1 ],[ 12, 5 ],[ 6, 2 ],[ 6, 2 ],[ 6, 2 ],[ 8, 2 ],[ 4, 2 ],
[ 2, 1 ],[ 2, 1 ],[ 2, 1 ],[ 3, 1 ],[ 1, 1 ],
gap> G:=SmallGroup(48,13);IdGroup(G);cl:=NormalSubgroups(G);;len:=Size(cl);for i in [1..len] do Print(IdGroup(cl[i]),","); od;
<pc group of size 48 with 5 generators>
[ 48, 13 ]
19
[ 48, 13 ],[ 24, 9 ],[ 24, 7 ],[ 24, 7 ],[ 12, 2 ],[ 12, 2 ],[ 12, 5 ],[ 6, 2 ],[ 6, 2 ],[ 6, 2 ],[ 8, 2 ],[ 4, 1 ],
[ 4, 1 ],[ 4, 2 ],[ 2, 1 ],[ 2, 1 ],[ 2, 1 ],[ 3, 1 ],[ 1, 1 ],

所有辛矩阵的行列式为1,所以辛群Sp(2n,F)是特殊线性群SL(2n,F)的子群。
|SL(2,2)|=6
|Sp(2,2)|=6
|SL(4,2)|=20160
|Sp(4,2)|=720
|SL(6,2)|=20158709760
|Sp(6,2)|=1451520
|SL(2,3)|=24
|Sp(2,3)|=24
|SL(4,3)|=12130560
|Sp(4,3)|=51840

gap> IdGroup(GO(-1,2,7));
[ 16, 7 ]
gap> IdGroup(GO(1,2,7));
[ 12, 4 ]
O_2(F_7)=D_8
M2 g_M2Elem[16]={
{1,0,0,1},//第5个正交矩阵:
{0,1,1,0},//第1个正交矩阵:
{0,1,6,0},//第2个正交矩阵:
{0,6,1,0},//第3个正交矩阵:
{0,6,6,0},//第4个正交矩阵:
{1,0,0,6},//第6个正交矩阵:
{2,2,2,5},//第7个正交矩阵:
{2,2,5,2},//第8个正交矩阵:
{2,5,2,2},//第9个正交矩阵:
{2,5,5,5},//第10个正交矩阵:
{5,2,2,2},//第11个正交矩阵:
{5,2,5,5},//第12个正交矩阵:
{5,5,2,5},//第13个正交矩阵:
{5,5,5,2},//第14个正交矩阵:
{6,0,0,1},//第15个正交矩阵:
{6,0,0,6},//第16个正交矩阵:
};
int g_D8Mul[16][16]={
{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
{1,0,14,5,15,3,8,10,6,12,7,13,9,11,2,4},
{2,5,15,0,14,4,9,11,7,13,6,12,8,10,1,3},
{3,14,0,15,5,1,10,8,12,6,13,7,11,9,4,2},
{4,15,5,14,0,2,11,9,13,7,12,6,10,8,3,1},
{5,2,1,4,3,0,7,6,9,8,11,10,13,12,15,14},
{6,7,10,9,12,8,0,1,5,3,2,14,4,15,11,13},
{7,6,11,8,13,9,5,2,0,4,1,15,3,14,10,12},
{8,10,7,12,9,6,1,0,3,5,14,2,15,4,13,11},
{9,11,6,13,8,7,2,5,4,0,15,1,14,3,12,10},
{10,8,13,6,11,12,3,14,1,15,0,4,5,2,7,9},
{11,9,12,7,10,13,4,15,2,14,5,3,0,1,6,8},
{12,13,8,11,6,10,14,3,15,1,4,0,2,5,9,7},
{13,12,9,10,7,11,15,4,14,2,3,5,1,0,8,6},
{14,3,4,1,2,15,12,13,10,11,8,9,6,7,0,5},
{15,4,3,2,1,14,13,12,11,10,9,8,7,6,5,0},
};
请输入群A凯莱表文件名:D8.txt
G16ElementToOrder(0)=1
G16ElementToOrder(1)=2
G16ElementToOrder(2)=4
G16ElementToOrder(3)=4
G16ElementToOrder(4)=2
G16ElementToOrder(5)=2
G16ElementToOrder(6)=2
G16ElementToOrder(7)=8
G16ElementToOrder(8)=8
G16ElementToOrder(9)=2
G16ElementToOrder(10)=2
G16ElementToOrder(11)=8
G16ElementToOrder(12)=8
G16ElementToOrder(13)=2
G16ElementToOrder(14)=2
G16ElementToOrder(15)=2
D8有1个1阶元,9个2阶元,2个4阶元,4个8阶元,0个16阶元
GAP4[ 16, 7 ]=gap> G:=DihedralGroup(16);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,4,8,16];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 16 with 4 generators>
[ 16, 7 ]
[ 1, 2, 8, 4, 2, 2, 2, 2, 8, 8, 4, 2, 2, 2, 8, 2 ]
[ 1, 2, 4, 8, 16 ]
1,9,2,4,0,
 
GAP4[ 8, 3 ]=O_2(F_3)=D_4
gap> IdGroup(GO(-1,2,3));
[ 8, 3 ]
gap> IdGroup(GO(1,2,3));
[ 4, 2 ]
M2 g_M2Elem[8]={
 {1,0,0,1},//第5个正交矩阵,det=1
 {0,1,1,0},//第1个正交矩阵,det=2
 {0,1,2,0},//第2个正交矩阵,det=1
 {0,2,1,0},//第3个正交矩阵,det=1
 {0,2,2,0},//第4个正交矩阵,det=2
 {1,0,0,2},//第6个正交矩阵,det=2
 {2,0,0,1},//第7个正交矩阵,det=2
 {2,0,0,2}//第8个正交矩阵,det=1
};
int g_D4Mul[8][8]={
{0,1,2,3,4,5,6,7},
{1,0,6,5,7,3,2,4},
{2,5,7,0,6,4,1,3},
{3,6,0,7,5,1,4,2},
{4,7,5,6,0,2,3,1},
{5,2,1,4,3,0,7,6},
{6,3,4,1,2,7,0,5},
{7,4,3,2,1,6,5,0},
};
请输入群A凯莱表文件名:D4.txt
G8ElementToOrder(0)=1
G8ElementToOrder(1)=2
G8ElementToOrder(2)=4
G8ElementToOrder(3)=4
G8ElementToOrder(4)=2
G8ElementToOrder(5)=2
G8ElementToOrder(6)=2
G8ElementToOrder(7)=2
GAP4[ 8, 3 ]=D4有1个1阶元,5个2阶元,2个4阶元,0个8阶元
gap> G:=DihedralGroup(8);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,4,8];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 8 with 3 generators>
[ 8, 3 ]
[ 1, 2, 4, 2, 2, 2, 4, 2 ]
[ 1, 2, 4, 8 ]
1,5,2,0,
正多边形的重合运动群叫做二面体群。
正三角形重合于自身的运动的集合D_3(6阶)
正方形重合于自身的运动的集合D_4(8阶)
id=(1,2,3,4)
f_d=(2,1,3,4)
f_c=(1,2,4,3)
r_2=(2,1,4,3)
f_v=(3,4,1,2)
r_1=(4,3,1,2)
r_3=(3,4,2,1)
f_h=(4,3,2,1)
1/id=id
1/f_d=f_d
1/f_c=f_c
1/r_2=r_2
1/f_v=f_v
1/r_1=r_3
1/r_3=r_1
1/f_h=f_h
----8阶非交换群D_4的乘法运算表----
id*id=id id*f_d=f_d id*f_c=f_c id*r_2=r_2 id*f_v=f_v id*r_1=r_1 id*r_3=r_3 id*f_h=f_h
f_d*id=f_d f_d*f_d=id f_d*f_c=r_2 f_d*r_2=f_c f_d*f_v=r_3 f_d*r_1=f_h f_d*r_3=f_v f_d*f_h=r_1
f_c*id=f_c f_c*f_d=r_2 f_c*f_c=id f_c*r_2=f_d f_c*f_v=r_1 f_c*r_1=f_v f_c*r_3=f_h f_c*f_h=r_3
r_2*id=r_2 r_2*f_d=f_c r_2*f_c=f_d r_2*r_2=id r_2*f_v=f_h r_2*r_1=r_3 r_2*r_3=r_1 r_2*f_h=f_v
f_v*id=f_v f_v*f_d=r_1 f_v*f_c=r_3 f_v*r_2=f_h f_v*f_v=id f_v*r_1=f_d f_v*r_3=f_c f_v*f_h=r_2
r_1*id=r_1 r_1*f_d=f_v r_1*f_c=f_h r_1*r_2=r_3 r_1*f_v=f_c r_1*r_1=r_2 r_1*r_3=id r_1*f_h=f_d
r_3*id=r_3 r_3*f_d=f_h r_3*f_c=f_v r_3*r_2=r_1 r_3*f_v=f_d r_3*r_1=id r_3*r_3=r_2 r_3*f_h=f_c
f_h*id=f_h f_h*f_d=r_3 f_h*f_c=r_1 f_h*r_2=f_v f_h*f_v=r_2 f_h*r_1=f_c f_h*r_3=f_d f_h*f_h=id
(E_1)^2=(E_2)^2=(E_3)^2=(E_4)^2=(E_7)^2=(E_5)(E_6)=(E_5)^4=(E_6)^4=1
D_4的8*8群表中,对角线上E的个数为6。
E_3=r_2=(E_5)^2=(E_6)^2=(r_1)^2=(r_3)^2
(E_4)(E_7)=(E_7)(E_4)=(E_1)(E_2)=(E_2)(E_1)=E_3
(f_v)(f_h)=(f_h)(f_v)=(f_d)(f_c)=(f_c)(f_d)=r_2
令E_5=r_1,E_6=r_3
得(E_3)(E_6)=(E_6)(E_3)=E_5=r_2r_3=r_3r_2,
(E_3)(E_5)=(E_5)(E_3)=E_6=r_2r_1=r_1r_2
再令E_4=f_v,E_7=f_h,E_1=f_d,E_2=f_c
(E_4)(E_5)=E_1,f_vr_1=f_d
(E_5)(E_4)=E_2,r_1f_v=f_c
8阶群共有5个(就同构意义来说),其中,交换群有三个:GAP4[ 8, 1 ]=C_8,GAP4[ 8, 2 ]=C_2+C_4,GAP4[ 8, 5 ]=C_2+C_2+C_2;非交换群有两个:GAP4[ 8, 4 ]=Hamilton四元数群H,GAP4[ 8, 3 ]=4阶二面体群D_4。
定理:5种8阶群与它们的群元阶的分布一一对应[ 1, 2, 4, 8 ]
GAP4[8,1]:1,1,2,4,
GAP4[8,2]:1,3,4,0,
GAP4[8,3]:1,5,2,0,
GAP4[8,4]:1,1,6,0,
GAP4[8,5]:1,7,0,0,

GAP4[ 8, 5 ]=C_2×C_2×C_2
gap> G:=ElementaryAbelianGroup(8);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,4,8];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 8 with 3 generators>
[ 8, 5 ]
[ 1, 2, 2, 2, 2, 2, 2, 2 ]
[ 1, 2, 4, 8 ]
1,7,0,0,
GAP4[ 8, 2 ]=C_2×C_4=QD_8
gap> G:=DirectProduct(CyclicGroup(4),CyclicGroup(2));;IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,4,8];for i in M do Print(Size(Positions(L,i)),","); od;
[ 8, 2 ]
[ 1, 4, 2, 2, 4, 4, 2, 4 ]
[ 1, 2, 4, 8 ]
1,3,4,0,

GAP4[ 8, 1 ]=
C_8
gap> G:=CyclicGroup(8);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,4,8];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 8 with 3 generators>
[ 8, 1 ]
[ 1, 8, 4, 2, 8, 8, 4, 8 ]
[ 1, 2, 4, 8 ]
1,1,2,4,
{(1234),(14)(23)}在S_4中生成的子群
{i,j,k,1,-1,-i,-j,-k}
应用sylow定理探讨有限阶群的个数http://wenku.baidu.com/view/cde60d8dcc22bcd126ff0c0b.html
E1=(2,1,3,4)
E2=(1,2,4,3)
E3=(2,1,4,3)
E4=(3,4,1,2)
E5=(4,3,1,2)
E6=(3,4,2,1)
E7=(4,3,2,1)
1/E=E
1/E1=E1
1/E2=E2
1/E3=E3
1/E4=E4
1/E5=E6
1/E6=E5
1/E7=E7
----乘法运算表----
E*E=E E*E1=E1 E*E2=E2 E*E3=E3 E*E4=E4 E*E5=E5 E*E6=E6 E*E7=E7
E1*E=E1 E1*E1=E E1*E2=E3 E1*E3=E2 E1*E4=E6 E1*E5=E7 E1*E6=E4 E1*E7=E5
E2*E=E2 E2*E1=E3 E2*E2=E E2*E3=E1 E2*E4=E5 E2*E5=E4 E2*E6=E7 E2*E7=E6
E3*E=E3 E3*E1=E2 E3*E2=E1 E3*E3=E E3*E4=E7 E3*E5=E6 E3*E6=E5 E3*E7=E4
E4*E=E4 E4*E1=E5 E4*E2=E6 E4*E3=E7 E4*E4=E E4*E5=E1 E4*E6=E2 E4*E7=E3
E5*E=E5 E5*E1=E4 E5*E2=E7 E5*E3=E6 E5*E4=E2 E5*E5=E3 E5*E6=E E5*E7=E1
E6*E=E6 E6*E1=E7 E6*E2=E4 E6*E3=E5 E6*E4=E1 E6*E5=E E6*E6=E3 E6*E7=E2
E7*E=E7 E7*E1=E6 E7*E2=E5 E7*E3=E4 E7*E4=E3 E7*E5=E2 E7*E6=E1 E7*E7=E
#include"stdafx.h"
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;
template<class T>
void __stdcall Brmul(T *a,T *b,int m,int n,int k,T *c)
{
 int i,j,l,u;
 for (i=0; i<=m-1; i++)
  for (j=0; j<=k-1; j++)
  {
   u=i*k+j;
   c[u]=0.0;
   for(l=0; l<=n-1; l++)
    c[u]=c[u]+a[i*n+l]*b[l*k+j];
  }
  return;
}
class MATRIX4
{
public:
 MATRIX4()
 {
  memset(&m_val[0][0],0,16*sizeof(int));
 }
 //compare
 const bool operator==(const MATRIX4& m)const
 {
  for(int i=0;i<4;i++)
   for(int j=0;j<4;j++)
   {
    if(m_val[i][j]!=m.m_val[i][j])
     return false;
   }
  return true;
 }
 //MATRIX4 inverse() const
 //{
 //   MATRIX4 mtx=*this;
 //   int i=Brinv((int *)&mtx.m_val[0][0],4);
 //   if(i!=0)
 //    return mtx;
 //   return MATRIX4();
 //}
 const MATRIX4 operator*(const MATRIX4& m) const
 {
  MATRIX4 mtx;
  Brmul/*<int>*/((int *)&(this->m_val[0][0]),(int *)&(m.m_val[0][0]),4,4,4,(int *)&(mtx.m_val[0][0]));
  return mtx;
 }
 static MATRIX4 NameToS4E(const char*name);
 static const char* S4EToName(const MATRIX4 &m);
 friend ostream& operator<< (ostream& os,MATRIX4& mtx);
public:
 int m_val[4][4]; //column vectors,应该是行向量或列向量,对象占用4*16=64字节的内存空间,内存顺序与真数组的内存顺序是一致的
 static int *S4[24];
 static const char S4Name[24][100];
 static int a1234[4][4];
 static int a1243[4][4];
 static int a1324[4][4];
 static int a1342[4][4];
 static int a1423[4][4];
 static int a1432[4][4];
 static int a2134[4][4];
 static int a2143[4][4];
 static int a2314[4][4];
 static int a2341[4][4];
 static int a2413[4][4];
 static int a2431[4][4];
 static int a3124[4][4];
 static int a3142[4][4];
 static int a3214[4][4];
 static int a3241[4][4];
 static int a3412[4][4];
 static int a3421[4][4];
 static int a4123[4][4];
 static int a4132[4][4];
 static int a4213[4][4];
 static int a4231[4][4];
 static int a4312[4][4];
 static int a4321[4][4];
};
int MATRIX4::a1234[4][4]={ {1,0,0,0},
{0,1,0,0},
{0,0,1,0},
{0,0,0,1}};
int MATRIX4::a1243[4][4]={ {1,0,0,0},
{0,1,0,0},
{0,0,0,1},
{0,0,1,0}};
int MATRIX4::a1324[4][4]={ {1,0,0,0},
{0,0,1,0},
{0,1,0,0},
{0,0,0,1}};
int MATRIX4::a1342[4][4]={ {1,0,0,0},
{0,0,0,1},
{0,1,0,0},
{0,0,1,0}};
int MATRIX4::a1423[4][4]={ {1,0,0,0},
{0,0,1,0},
{0,0,0,1},
{0,1,0,0}};
int MATRIX4::a1432[4][4]={ {1,0,0,0},
{0,0,0,1},
{0,0,1,0},
{0,1,0,0}};
int MATRIX4::a2134[4][4]={ {0,1,0,0},
{1,0,0,0},
{0,0,1,0},
{0,0,0,1}};
int MATRIX4::a2143[4][4]={ {0,1,0,0},
{1,0,0,0},
{0,0,0,1},
{0,0,1,0}};
int MATRIX4::a2314[4][4]={ {0,0,1,0},
{1,0,0,0},
{0,1,0,0},
{0,0,0,1}};
int MATRIX4::a2341[4][4]={ {0,0,0,1},
{1,0,0,0},
{0,1,0,0},
{0,0,1,0}};
int MATRIX4::a2413[4][4]={ {0,0,1,0},
{1,0,0,0},
{0,0,0,1},
{0,1,0,0}};
int MATRIX4::a2431[4][4]={ {0,0,0,1},
{1,0,0,0},
{0,0,1,0},
{0,1,0,0}};
int MATRIX4::a3124[4][4]={ {0,1,0,0},
{0,0,1,0},
{1,0,0,0},
{0,0,0,1}};
int MATRIX4::a3142[4][4]={ {0,1,0,0},
{0,0,0,1},
{1,0,0,0},
{0,0,1,0}};
int MATRIX4::a3214[4][4]={ {0,0,1,0},
{0,1,0,0},
{1,0,0,0},
{0,0,0,1}};
int MATRIX4::a3241[4][4]={ {0,0,0,1},
{0,1,0,0},
{1,0,0,0},
{0,0,1,0}};
int MATRIX4::a3412[4][4]={ {0,0,1,0},
{0,0,0,1},
{1,0,0,0},
{0,1,0,0}};
int MATRIX4::a3421[4][4]={ {0,0,0,1},
{0,0,1,0},
{1,0,0,0},
{0,1,0,0}};
int MATRIX4::a4123[4][4]={ {0,1,0,0},
{0,0,1,0},
{0,0,0,1},
{1,0,0,0}};
int MATRIX4::a4132[4][4]={ {0,1,0,0},
{0,0,0,1},
{0,0,1,0},
{1,0,0,0}};
int MATRIX4::a4213[4][4]={ {0,0,1,0},
{0,1,0,0},
{0,0,0,1},
{1,0,0,0}};
int MATRIX4::a4231[4][4]={ {0,0,0,1},
{0,1,0,0},
{0,0,1,0},
{1,0,0,0}};
int MATRIX4::a4312[4][4]={ {0,0,1,0},
{0,0,0,1},
{0,1,0,0},
{1,0,0,0}};
int MATRIX4::a4321[4][4]={ {0,0,0,1},
{0,0,1,0},
{0,1,0,0},
{1,0,0,0}};
int *MATRIX4::S4[24]={(int *)a1234,(int *)a1243,(int *)a1324,(int *)a1342,(int *)a1423,(int *)a1432,(int *)a2134,(int *)a2143,(int *)a2314,(int *)a2341,(int *)a2413,(int *)a2431,(int *)a3124,(int *)a3142,(int *)a3214,(int *)a3241,(int *)a3412,(int *)a3421,(int *)a4123,(int *)a4132,(int *)a4213,(int *)a4231,(int *)a4312,(int *)a4321};
const char MATRIX4::S4Name[24][100]={"1234","1243","1324","1342","1423","1432","2134","2143","2314","2341","2413","2431","3124","3142","3214","3241","3412","3421","4123","4132","4213","4231","4312","4321"};
MATRIX4 MATRIX4::NameToS4E(const char*name)
{
#define RETURN_MTX(mtxName) {memcpy(&mtx,a##mtxName##,sizeof(a##mtxName##));return mtx;}
 MATRIX4 mtx;
 if(strcmp(name,"(1)")==0||strcmp(name,"(1,2,3,4)")==0)
 {
  memcpy(&mtx,a1234,sizeof(a1234));
  return mtx;//乘法单位元
 }
 if(strcmp(name,"(34)")==0||strcmp(name,"(1,2,4,3)")==0)
 {
  memcpy(&mtx,a1243,sizeof(a1243));
  return mtx;
 }
 if(strcmp(name,"(23)")==0||strcmp(name,"(1,3,2,4)")==0)
  RETURN_MTX(1324)
 if(strcmp(name,"(234)")==0||strcmp(name,"(1,3,4,2)")==0)
  RETURN_MTX(1342);
 if(strcmp(name,"(243)")==0||strcmp(name,"(1,4,2,3)")==0)
  RETURN_MTX(1423);
 if(strcmp(name,"(24)")==0||strcmp(name,"(1,4,3,2)")==0)
  RETURN_MTX(1432);
 if(strcmp(name,"(12)")==0||strcmp(name,"(2,1,3,4)")==0)
  RETURN_MTX(2134);
 if(strcmp(name,"(12)(34)")==0||strcmp(name,"(2,1,4,3)")==0)
  RETURN_MTX(2143);
 if(strcmp(name,"(123)")==0||strcmp(name,"(2,3,1,4)")==0)
  RETURN_MTX(2314);
 if(strcmp(name,"(1234)")==0||strcmp(name,"(2,3,4,1)")==0)
  RETURN_MTX(2341);
 if(strcmp(name,"(1243)")==0||strcmp(name,"(2,4,1,3)")==0)
  RETURN_MTX(2413);
 if(strcmp(name,"(124)")==0||strcmp(name,"(2,4,3,1)")==0)
  RETURN_MTX(2431);
 if(strcmp(name,"(132)")==0||strcmp(name,"(3,1,2,4)")==0)
  RETURN_MTX(3124);
 if(strcmp(name,"(1342)")==0||strcmp(name,"(3,1,4,2)")==0)
  RETURN_MTX(3142);
 if(strcmp(name,"(13)")==0||strcmp(name,"(3,2,1,4)")==0)
  RETURN_MTX(3214);
 if(strcmp(name,"(134)")==0||strcmp(name,"(3,2,4,1)")==0)
  RETURN_MTX(3241);
 if(strcmp(name,"(13)(24)")==0||strcmp(name,"(3,4,1,2)")==0)
  RETURN_MTX(3412);
 if(strcmp(name,"(1324)")==0||strcmp(name,"(3,4,2,1)")==0)
  RETURN_MTX(3421);
 if(strcmp(name,"(1432)")==0||strcmp(name,"(4,1,2,3)")==0)
  RETURN_MTX(4123);
 if(strcmp(name,"(142)")==0||strcmp(name,"(4,1,3,2)")==0)
  RETURN_MTX(4132);
 if(strcmp(name,"(143)")==0||strcmp(name,"(4,2,1,3)")==0)
  RETURN_MTX(4213);
 if(strcmp(name,"(14)")==0||strcmp(name,"(4,2,3,1)")==0)
  RETURN_MTX(4231);
 if(strcmp(name,"(1423)")==0||strcmp(name,"(4,3,1,2)")==0)
  RETURN_MTX(4312);
 if(strcmp(name,"(14)(23)")==0||strcmp(name,"(4,3,2,1)")==0)
  RETURN_MTX(4321);
#undef RETURN_MTX
 return MATRIX4();
}
const char* MATRIX4::S4EToName(const MATRIX4 &m)
{
 for(int i=0;i<24;i++)
 {
  MATRIX4 mtx;
  memcpy(&mtx,S4[i],sizeof(a1234));
  if(mtx==m)
  {
   int iName=atoi(S4Name[i]);
   static char sz[100]={0};
   sprintf(sz,"(%d,%d,%d,%d)",iName/1000,(iName%1000)/100,(iName%100)/10,iName%10);
      return sz;
  }
 }
 return "Error";
}
ostream& operator<< (ostream& os,MATRIX4& mtx)
{
 for(int i=0;i<=3;i++)
 {
  for(int j=0;j<=3;j++)
   os<<mtx.m_val[i][j]<<",";
  os<<endl;
 }
 return os;
}
struct S4Element
{
public:
 static S4Element g_Error;
 S4Element(int a1,int a2,int a3,int a4):m_a1(a1),m_a2(a2),m_a3(a3),m_a4(a4){}
 bool operator==(const S4Element & a)
 {
  return (m_a1==a.m_a1 && m_a2==a.m_a2 && m_a3==a.m_a3 && m_a4==a.m_a4);
 }
 //二十四阶非交换群S_4的乘法表
 S4Element operator*(const S4Element & a)
 {
  if(S4Element::g_Error==a||S4Element::g_Error==*this)
   return S4Element::g_Error;
  //if(S4Element(1,2,3,4)==*this)
  // return a;
  //if(S4Element(1,2,3,4)==a)
  // return *this;
  MATRIX4 retM=MATRIX4::NameToS4E(S4Element::S4EToName(*this))*MATRIX4::NameToS4E(S4Element::S4EToName(a));
  return S4Element::NameToS4E(MATRIX4::S4EToName(retM));
 }
    //乘法逆元
    S4Element InvMul()const
 {
   for(int i=0;i<24;i++)
  {
   MATRIX4 mtx;
   memcpy(&mtx,MATRIX4::S4[i],sizeof(MATRIX4::a1234));
   S4Element s4e=S4Element::NameToS4E(MATRIX4::S4EToName(mtx));
   if(s4e*(*this)==S4Element(1,2,3,4))
   {
    return s4e;
   }
  }
  return S4Element::g_Error;
 }
 ////是否是偶置换
 //bool IsOdd()const
 //{
 //    if(S3Element(1,2,3)==*this)
 //  return true;
 // if(S3Element(2,3,1)==*this)
 //  return true;
 //    if(S3Element(3,1,2)==*this)
 //  return true;
 // return false;
 //}
 static S4Element NameToS4E(const char*name)
 {
#define RETURN_S4E(iName) {return S4Element(iName/1000,(iName%1000)/100,(iName%100)/10,iName%10);}
 if(strcmp(name,"(1)")==0||strcmp(name,"(1,2,3,4)")==0)
  return S4Element(1,2,3,4);//乘法单位元
 if(strcmp(name,"(34)")==0||strcmp(name,"(1,2,4,3)")==0)
  return S4Element(1,2,4,3);
 if(strcmp(name,"(23)")==0||strcmp(name,"(1,3,2,4)")==0)
  return S4Element(1,3,2,4);
 if(strcmp(name,"(234)")==0||strcmp(name,"(1,3,4,2)")==0)
  RETURN_S4E(1342);
 if(strcmp(name,"(243)")==0||strcmp(name,"(1,4,2,3)")==0)
  RETURN_S4E(1423);
 if(strcmp(name,"(24)")==0||strcmp(name,"(1,4,3,2)")==0)
  RETURN_S4E(1432);
 if(strcmp(name,"(12)")==0||strcmp(name,"(2,1,3,4)")==0)
  RETURN_S4E(2134);
 if(strcmp(name,"(12)(34)")==0||strcmp(name,"(2,1,4,3)")==0)
  RETURN_S4E(2143);
 if(strcmp(name,"(123)")==0||strcmp(name,"(2,3,1,4)")==0)
  RETURN_S4E(2314);
 if(strcmp(name,"(1234)")==0||strcmp(name,"(2,3,4,1)")==0)
  RETURN_S4E(2341);
 if(strcmp(name,"(1243)")==0||strcmp(name,"(2,4,1,3)")==0)
  RETURN_S4E(2413);
 if(strcmp(name,"(124)")==0||strcmp(name,"(2,4,3,1)")==0)
  RETURN_S4E(2431);
 if(strcmp(name,"(132)")==0||strcmp(name,"(3,1,2,4)")==0)
  RETURN_S4E(3124);
 if(strcmp(name,"(1342)")==0||strcmp(name,"(3,1,4,2)")==0)
  RETURN_S4E(3142);
 if(strcmp(name,"(13)")==0||strcmp(name,"(3,2,1,4)")==0)
  RETURN_S4E(3214);
 if(strcmp(name,"(134)")==0||strcmp(name,"(3,2,4,1)")==0)
  RETURN_S4E(3241);
 if(strcmp(name,"(13)(24)")==0||strcmp(name,"(3,4,1,2)")==0)
  RETURN_S4E(3412);
 if(strcmp(name,"(1324)")==0||strcmp(name,"(3,4,2,1)")==0)
  RETURN_S4E(3421);
 if(strcmp(name,"(1432)")==0||strcmp(name,"(4,1,2,3)")==0)
  RETURN_S4E(4123);
 if(strcmp(name,"(142)")==0||strcmp(name,"(4,1,3,2)")==0)
  RETURN_S4E(4132);
 if(strcmp(name,"(143)")==0||strcmp(name,"(4,2,1,3)")==0)
  RETURN_S4E(4213);
 if(strcmp(name,"(14)")==0||strcmp(name,"(4,2,3,1)")==0)
  RETURN_S4E(4231);
 if(strcmp(name,"(1423)")==0||strcmp(name,"(4,3,1,2)")==0)
  RETURN_S4E(4312);
 if(strcmp(name,"(14)(23)")==0||strcmp(name,"(4,3,2,1)")==0)
  RETURN_S4E(4321);
#undef RETURN_S4E
   return S4Element::g_Error;
 }
 static const char* S4EToName(const S4Element & a,int type=0)
 {
  if(type==0)
  {
   static char sz[100]={0};
   sprintf(sz,"(%d,%d,%d,%d)",a.m_a1,a.m_a2,a.m_a3,a.m_a4);
   return sz;
  }
  if(type==1)
  {
   static char sz[100]={0};
   strcpy(sz,MY_S4EToName(a));
   return sz;
  }
  return "Error";
 }
 /*
  //E=(1,2,3,4)
  //E1=(2,1,3,4)
  //E2=(1,2,4,3)
  //E3=(2,1,4,3)
  //E4=(3,4,1,2)
  //E5=(4,3,1,2)
  //E6=(3,4,2,1)
  //E7=(4,3,2,1)
 */
 static const char* MY_S4EToName(const S4Element & a)
 {
  if(S4Element::NameToS4E("(1)")==a)
   return "E";
  if(S4Element::NameToS4E("(12)")==a)
   return "E1";
  if(S4Element::NameToS4E("(34)")==a)
   return "E2";
  if(S4Element::NameToS4E("(12)(34)")==a)
   return "E3";
  if(S4Element::NameToS4E("(13)(24)")==a)
   return "E4";
  if(S4Element::NameToS4E("(1423)")==a)
   return "E5";
  if(S4Element::NameToS4E("(1324)")==a)
   return "E6";
  if(S4Element::NameToS4E("(14)(23)")==a)
   return "E7";
  return "UnKnown";
 }
 friend ostream& operator<< (ostream& os,S4Element& a);
public:
 int m_a1,m_a2,m_a3,m_a4;//双行置换表达式
};
S4Element S4Element::g_Error=S4Element(0,0,0,0);
ostream& operator<< (ostream& os,S4Element& a)
{
 cout<<S4Element::S4EToName(a,0);
 return os;
}
int main()
{
 //8个置换E=(1),E1=(12),E2=(34),E3=(12)(34),E4=(13)(24),E5=(1423),E6=(1324),E7=(14)(23)
 S4Element E=S4Element::NameToS4E("(1)");
 S4Element E1=S4Element::NameToS4E("(12)");
 S4Element E2=S4Element::NameToS4E("(34)");
 S4Element E3=S4Element::NameToS4E("(12)(34)");
 S4Element E4=S4Element::NameToS4E("(13)(24)");
 S4Element E5=S4Element::NameToS4E("(1423)");
 S4Element E6=S4Element::NameToS4E("(1324)");
 S4Element E7=S4Element::NameToS4E("(14)(23)");
 cout<<"E="<<E<<endl;
 cout<<"E1="<<E1<<endl;
 cout<<"E2="<<E2<<endl;
 cout<<"E3="<<E3<<endl;
 cout<<"E4="<<E4<<endl;
 cout<<"E5="<<E5<<endl;
 cout<<"E6="<<E6<<endl;
 cout<<"E7="<<E7<<endl;
 cout<<"1/E="<<S4Element::S4EToName(E.InvMul(),1)<<endl;
 cout<<"1/E1="<<S4Element::S4EToName(E1.InvMul(),1)<<endl;
 cout<<"1/E2="<<S4Element::S4EToName(E2.InvMul(),1)<<endl;
 cout<<"1/E3="<<S4Element::S4EToName(E3.InvMul(),1)<<endl;
 cout<<"1/E4="<<S4Element::S4EToName(E4.InvMul(),1)<<endl;
 cout<<"1/E5="<<S4Element::S4EToName(E5.InvMul(),1)<<endl;
 cout<<"1/E6="<<S4Element::S4EToName(E6.InvMul(),1)<<endl;
 cout<<"1/E7="<<S4Element::S4EToName(E7.InvMul(),1)<<endl;
    printf("----乘法运算表----\n");
  printf("E*E=%s ",S4Element::S4EToName(E*E,1));
 printf("E*E1=%s ",S4Element::S4EToName(E*E1,1));
 printf("E*E2=%s ",S4Element::S4EToName(E*E2,1));
 printf("E*E3=%s ",S4Element::S4EToName(E*E3,1));
 printf("E*E4=%s ",S4Element::S4EToName(E*E4,1));
 printf("E*E5=%s ",S4Element::S4EToName(E*E5,1));
 printf("E*E6=%s ",S4Element::S4EToName(E*E6,1));
 printf("E*E7=%s\n",S4Element::S4EToName(E*E7,1));
 printf("E1*E=%s ",S4Element::S4EToName(E1*E,1));
 printf("E1*E1=%s ",S4Element::S4EToName(E1*E1,1));
 printf("E1*E2=%s ",S4Element::S4EToName(E1*E2,1));
 printf("E1*E3=%s ",S4Element::S4EToName(E1*E3,1));
 printf("E1*E4=%s ",S4Element::S4EToName(E1*E4,1));
 printf("E1*E5=%s ",S4Element::S4EToName(E1*E5,1));
 printf("E1*E6=%s ",S4Element::S4EToName(E1*E6,1));
 printf("E1*E7=%s\n",S4Element::S4EToName(E1*E7,1));
 printf("E2*E=%s ",S4Element::S4EToName(E2*E,1));
 printf("E2*E1=%s ",S4Element::S4EToName(E2*E1,1));
 printf("E2*E2=%s ",S4Element::S4EToName(E2*E2,1));
 printf("E2*E3=%s ",S4Element::S4EToName(E2*E3,1));
 printf("E2*E4=%s ",S4Element::S4EToName(E2*E4,1));
 printf("E2*E5=%s ",S4Element::S4EToName(E2*E5,1));
 printf("E2*E6=%s ",S4Element::S4EToName(E2*E6,1));
 printf("E2*E7=%s\n",S4Element::S4EToName(E2*E7,1));
 printf("E3*E=%s ",S4Element::S4EToName(E3*E,1));
 printf("E3*E1=%s ",S4Element::S4EToName(E3*E1,1));
 printf("E3*E2=%s ",S4Element::S4EToName(E3*E2,1));
 printf("E3*E3=%s ",S4Element::S4EToName(E3*E3,1));
 printf("E3*E4=%s ",S4Element::S4EToName(E3*E4,1));
 printf("E3*E5=%s ",S4Element::S4EToName(E3*E5,1));
 printf("E3*E6=%s ",S4Element::S4EToName(E3*E6,1));
 printf("E3*E7=%s\n",S4Element::S4EToName(E3*E7,1));
 printf("E4*E=%s ",S4Element::S4EToName(E4*E,1));
 printf("E4*E1=%s ",S4Element::S4EToName(E4*E1,1));
 printf("E4*E2=%s ",S4Element::S4EToName(E4*E2,1));
 printf("E4*E3=%s ",S4Element::S4EToName(E4*E3,1));
 printf("E4*E4=%s ",S4Element::S4EToName(E4*E4,1));
 printf("E4*E5=%s ",S4Element::S4EToName(E4*E5,1));
 printf("E4*E6=%s ",S4Element::S4EToName(E4*E6,1));
 printf("E4*E7=%s\n",S4Element::S4EToName(E4*E7,1));
 printf("E5*E=%s ",S4Element::S4EToName(E5*E,1));
 printf("E5*E1=%s ",S4Element::S4EToName(E5*E1,1));
 printf("E5*E2=%s ",S4Element::S4EToName(E5*E2,1));
 printf("E5*E3=%s ",S4Element::S4EToName(E5*E3,1));
 printf("E5*E4=%s ",S4Element::S4EToName(E5*E4,1));
 printf("E5*E5=%s ",S4Element::S4EToName(E5*E5,1));
 printf("E5*E6=%s ",S4Element::S4EToName(E5*E6,1));
 printf("E5*E7=%s\n",S4Element::S4EToName(E5*E7,1));
 printf("E6*E=%s ",S4Element::S4EToName(E6*E,1));
 printf("E6*E1=%s ",S4Element::S4EToName(E6*E1,1));
 printf("E6*E2=%s ",S4Element::S4EToName(E6*E2,1));
 printf("E6*E3=%s ",S4Element::S4EToName(E6*E3,1));
 printf("E6*E4=%s ",S4Element::S4EToName(E6*E4,1));
 printf("E6*E5=%s ",S4Element::S4EToName(E6*E5,1));
 printf("E6*E6=%s ",S4Element::S4EToName(E6*E6,1));
 printf("E6*E7=%s\n",S4Element::S4EToName(E6*E7,1));
 printf("E7*E=%s ",S4Element::S4EToName(E7*E,1));
 printf("E7*E1=%s ",S4Element::S4EToName(E7*E1,1));
 printf("E7*E2=%s ",S4Element::S4EToName(E7*E2,1));
 printf("E7*E3=%s ",S4Element::S4EToName(E7*E3,1));
 printf("E7*E4=%s ",S4Element::S4EToName(E7*E4,1));
 printf("E7*E5=%s ",S4Element::S4EToName(E7*E5,1));
 printf("E7*E6=%s ",S4Element::S4EToName(E7*E6,1));
 printf("E7*E7=%s\n",S4Element::S4EToName(E7*E7,1));
 system("pause");
 return 0;
}
六阶非交换群乘法运算表的C++实现
I=I=(1,2,3)=(1)
r=r=(2,3,1)=(123)
rr=rr=(3,1,2)=(132)
f=f=(3,2,1)=(13)
fr=fr=(1,3,2)=(23)
frr=rf=(2,1,3)=(12)
1/I=I=(1,2,3)=(1)
1/r=rr=(3,1,2)=(132)
1/rr=r=(2,3,1)=(123)
1/f=f=(3,2,1)=(13)
1/fr=fr=(1,3,2)=(23)
1/frr=rf=(2,1,3)=(12)
f*f=I=(1,2,3)=(1)
frr*f=r=(2,3,1)=(123)
f*frr=rr=(3,1,2)=(132)
#include<cstring>
#include<iostream>
using namespace std;
struct S3Element
{
public:
 static S3Element g_Error;
 S3Element(int a1,int a2,int a3):m_a1(a1),m_a2(a2),m_a3(a3){}
 bool operator==(const S3Element & a)
 {
  return (m_a1==a.m_a1 && m_a2==a.m_a2 && m_a3==a.m_a3);
 }
 //六阶非交换群{I,r,rr,f,fr,frr}的乘法表
 S3Element operator*(const S3Element & a)
 {
  if(S3Element::g_Error==a||S3Element::g_Error==*this)
   return S3Element::g_Error;
  if(S3Element(1,2,3)==*this)
   return a;
  if(S3Element(1,2,3)==a)
   return *this;
  static char sz[100]={0};
  strcpy(sz,S3Element::S3EToName(*this));
  strcat(sz,S3Element::S3EToName(a));
  return S3Element::NameToS3E(sz);
 }
    //乘法逆元
    S3Element InvMul()const
 {
  static S3Element S3EArr[6]={
   S3Element::NameToS3E("I"),S3Element::NameToS3E("r"),S3Element::NameToS3E("rr"),
   S3Element::NameToS3E("f"),S3Element::NameToS3E("fr"),S3Element::NameToS3E("frr")};
        for(int i=0;i<6;i++)
  {
     if(S3EArr[i]*(*this)==S3EArr[0])
      return S3EArr[i];
  }
  return S3Element::g_Error;
 }
 //是否是偶置换
 bool IsOdd()const
 {
     if(S3Element(1,2,3)==*this)
   return true;
  if(S3Element(2,3,1)==*this)
   return true;
     if(S3Element(3,1,2)==*this)
   return true;
  return false;
 }
 static S3Element NameToS3E(const char*name)
 {
   if(strcmp(name,"(1)")==0||strcmp(name,"I")==0||strcmp(name,"ff")==0||strcmp(name,"rrr")==0||strcmp(name,"rfrf")==0||strcmp(name,"frfr")==0)
    return S3Element(1,2,3);//乘法单位元
   if(strcmp(name,"(123)")==0||strcmp(name,"r")==0||strcmp(name,"frrf")==0||strcmp(name,"rff")==0||strcmp(name,"ffr")==0)
    return S3Element(2,3,1);//逆时针旋转120°
   if(strcmp(name,"(132)")==0||strcmp(name,"rr")==0||strcmp(name,"frf")==0)
    return S3Element(3,1,2);//逆时针旋转240°
   if(strcmp(name,"(13)")==0||strcmp(name,"f")==0||strcmp(name,"rfr")==0)
    return S3Element(3,2,1);//轴翻转
   if(strcmp(name,"(23)")==0||strcmp(name,"fr")==0||strcmp(name,"rrf")==0)
    return S3Element(1,3,2);//逆时针旋转120°后轴翻转
   if(strcmp(name,"(12)")==0||strcmp(name,"frr")==0||strcmp(name,"rf")==0||strcmp(name,"rrfr")==0)
    return S3Element(2,1,3);//逆时针旋转240°后轴翻转
   return S3Element::g_Error;
 }
 static const char* S3EToName(const S3Element & a,int type=0)
 {
  if(type==0)
  {
   if(S3Element(1,2,3)==a)
    return "I";
   if(S3Element(1,3,2)==a)
    return "fr";
   if(S3Element(2,1,3)==a)
    return "rf";
   if(S3Element(2,3,1)==a)
    return "r";
   if(S3Element(3,1,2)==a)
    return "rr";
   if(S3Element(3,2,1)==a)
    return "f";
  }
  if(type==1)
  {
   if(S3Element(1,2,3)==a)
    return "(1)";
   if(S3Element(1,3,2)==a)
    return "(23)";
   if(S3Element(2,1,3)==a)
    return "(12)";
   if(S3Element(2,3,1)==a)
    return "(123)";
   if(S3Element(3,1,2)==a)
    return "(132)";
   if(S3Element(3,2,1)==a)
    return "(13)";
  }
  return "Error";
 }
 friend ostream& operator<< (ostream& os,S3Element& a);
public:
 int m_a1,m_a2,m_a3;//双行置换表达式
};
S3Element S3Element::g_Error=S3Element(0,0,0);
ostream& operator<< (ostream& os,S3Element& a)
{
 cout<<S3Element::S3EToName(a,0)<<"="<<"("<<a.m_a1<<","<<a.m_a2<<","<<a.m_a3<<")="<<S3Element::S3EToName(a,1);
 return os;
}
int main()
{
 //S3Element f=S3Element::NameToS3E("(13)");
 //S3Element frr=S3Element::NameToS3E("(12)");
 //printf("%s=%s\n",S3Element::S3EToName(f),S3Element::S3EToName(f,1));
 //printf("ff=(13)(13)=%s=%s\n",S3Element::S3EToName(f*f),S3Element::S3EToName(f*f,1));
 //printf("(frr)f=(12)(13)=%s=%s\n",S3Element::S3EToName(frr*f),S3Element::S3EToName(frr*f,1));
 //printf("f(frr)=(13)(12)=%s=%s\n",S3Element::S3EToName(f*frr),S3Element::S3EToName(f*frr,1));
    S3Element I=S3Element::NameToS3E("I");
    S3Element r=S3Element::NameToS3E("r");
    S3Element rr=S3Element::NameToS3E("rr");
    S3Element f=S3Element::NameToS3E("f");
 S3Element fr=S3Element::NameToS3E("fr");
 S3Element frr=S3Element::NameToS3E("frr");
 cout<<"I="<<I<<endl;
 cout<<"r="<<r<<endl;
 cout<<"rr="<<rr<<endl;
 cout<<"f="<<f<<endl;
 cout<<"fr="<<fr<<endl;
 cout<<"frr="<<frr<<endl;
 cout<<"1/I="<<I.InvMul()<<endl;
 cout<<"1/r="<<r.InvMul()<<endl;
 cout<<"1/rr="<<rr.InvMul()<<endl;
 cout<<"1/f="<<f.InvMul()<<endl;
 cout<<"1/fr="<<fr.InvMul()<<endl;
 cout<<"1/frr="<<frr.InvMul()<<endl;
 cout<<"f*f="<<f*f<<endl;
 cout<<"frr*f="<<frr*f<<endl;
 cout<<"f*frr="<<f*frr<<endl;
 getchar();
 return 0;
}
有限域上的矩阵环M_3(F_17),它是一个17^9阶的有限环。
c++代码实现:
Cal c(3, 17);//有限域F_17中的3阶方阵
The origin Matrix is as follows:
1 2 3
0 5 6
0 0 9
The Inverse Matrix is as follows:
1 3 9
0 7 1
0 0 2
The Multiply Matrix is as follows:
1 0 0
0 1 0
0 0 1
克莱因域F_4的四则运算表的C++实现
printf("A*A-B*B=%s\n",VElement::VEToName(A*A-B*B));//A*A-B*B=I
printf("(A+B)*(A-B)=%s\n",VElement::VEToName((A+B)*(A-B)));//(A+B)*(A-B)=I
----加法运算表----
O+O=O O+I=I O+A=A O+B=B
I+O=I I+I=O I+A=B I+B=A
A+O=A A+I=B A+A=O A+B=I
B+O=B B+I=A B+A=I B+B=O
----乘法运算表----
O*O=O O*I=O O*A=O O*B=O
I*O=O I*I=I I*A=A I*B=B
A*O=O A*I=A A*A=B A*B=I
B*O=O B*I=B B*A=I B*B=A
----减法运算表----
O-O=O O-I=I O-A=A O-B=B
I-O=I I-I=O I-A=B I-B=A
A-O=A A-I=B A-A=O A-B=I
B-O=B B-I=A B-A=I B-B=O
----除法运算表----
O/O=Error O/I=O O/A=O O/B=O
I/O=Error I/I=I I/A=B I/B=A
A/O=Error A/I=A A/A=I A/B=B
B/O=Error B/I=B B/A=A B/B=I
#include "stdafx.h"
#include<stdio.h>
#include<string.h>
struct VElement
{
public:
 static VElement g_Error;
 VElement(int b1=0,int b2=0)
 {
  m_bVal[0]=b1;
  m_bVal[1]=b2;
 }
    //加法逆元
    VElement InvAdd()const//const加上去,否则会出现error C2662: “VElement::InvAdd”: 不能将“this”指针从“const VElement”转换为“VElement &”
 {
     VElement ret;
  ret.m_bVal[0]=(2-m_bVal[0])%2;
  ret.m_bVal[1]=(2-m_bVal[1])%2;
  return ret;
 }
    //乘法逆元
    VElement InvMul()const
 {
  if(VElement(1,1)==*this)
   return VElement(1,1);
        if(VElement(1,0)==*this)
   return VElement(0,1);
        if(VElement(0,1)==*this)
   return VElement(1,0);
  return VElement::g_Error;
 }
    VElement operator-(const VElement &a)
 {
  return (*this)+a.InvAdd();
 }
    VElement operator/(const VElement &a)
 {
  return (*this)*a.InvMul();
 }
 /*
 + O=(0,0),I=(1,1),A=(0,1),B=(1,0)
 O O         I         A          B
 I  I          O        B          A
 A A         B         O          I
 B B         A         I           O
 */
    VElement operator+(const VElement &a)
 {
  VElement ret;
  //0^0=0, 1^0=1, 0^1=1, 1^1=0<=>0+0=0, 1+0=1, 0+1=1, 1+1=0
  ret.m_bVal[0]=m_bVal[0]^a.m_bVal[0];
  ret.m_bVal[1]=m_bVal[1]^a.m_bVal[1];
  ////0+0=0, 1+0=1, 0+1=1, 1+1=0
  //ret.m_bVal[0]=(m_bVal[0]+a.m_bVal[0])%2;
  //ret.m_bVal[1]=(m_bVal[1]+a.m_bVal[1])%2;
  return ret;
 }
 /*
 * O=(0,0),I=(1,1),A=(0,1),B=(1,0)
 O O         O         O          O
 I  O         I        A          B
 A O         A         B          I
 B O         B         I           A
 I,A,B构成一个C_3群=>A*A=B,B*B=A,A*B=B*A=I
 */
    VElement operator*(const VElement &a)
 {
     VElement ret;
  ////错误的:0*0=0, 1*0=0, 0*1=0, 1*1=1
  //ret.m_bVal[0]=m_bVal[0]*a.m_bVal[0];
  //ret.m_bVal[1]=m_bVal[1]*a.m_bVal[1];
  //正确的:
  if(VElement::g_Error==a||VElement::g_Error==*this)
   return VElement::g_Error;
        if(VElement(0,1)==a&&VElement(0,1)==*this)
   return VElement(1,0);
        if(VElement(1,0)==a&&VElement(1,0)==*this)
   return VElement(0,1);
        if(VElement(0,1)==a&&VElement(1,0)==*this)
   return VElement(1,1);
        if(VElement(1,0)==a&&VElement(0,1)==*this)
   return VElement(1,1);
  ret.m_bVal[0]=m_bVal[0]*a.m_bVal[0];
  ret.m_bVal[1]=m_bVal[1]*a.m_bVal[1];
  return ret;
 }
    bool operator==(const VElement & a)
 {
  return (m_bVal[0]==a.m_bVal[0]&&m_bVal[1]==a.m_bVal[1]);
 }
 static VElement NameToVE(const char*name)
 {
    if(strcmp(name,"O")==0)
     return VElement(0,0);
    if(strcmp(name,"I")==0)
     return VElement(1,1);
    if(strcmp(name,"A")==0)
     return VElement(0,1);
    if(strcmp(name,"B")==0)
     return VElement(1,0);
    return VElement::g_Error;
 }
 static const char* VEToName(const VElement & a)
 {
    if(VElement(0,0)==a)
     return "O";
    if(VElement(1,1)==a)
     return "I";
    if(VElement(0,1)==a)
     return "A";
    if(VElement(1,0)==a)
     return "B";
    return "Error";
 }
public:
 int m_bVal[2];
};
VElement VElement::g_Error=VElement(-1,-1);
int main()
{
 //const char* ret1=VElement::VEToName(VElement::NameToVE("A")+VElement::NameToVE("B"));
 //printf("A+B=%s\n",ret1);
 //const char* ret2=VElement::VEToName(VElement::NameToVE("A")*VElement::NameToVE("B"));
 //printf("A*B=%s\n",ret2);
    VElement O,I,A,B;
    O=VElement::NameToVE("O");
    I=VElement::NameToVE("I");
    A=VElement::NameToVE("A");
    B=VElement::NameToVE("B");
    printf("----加法运算表----\n");
 printf("O+O=%s ",VElement::VEToName(O+O));
 printf("O+I=%s ",VElement::VEToName(O+I));
 printf("O+A=%s ",VElement::VEToName(O+A));
 printf("O+B=%s\n",VElement::VEToName(O+B));
 printf("I+O=%s ",VElement::VEToName(I+O));
 printf("I+I=%s ",VElement::VEToName(I+I));
 printf("I+A=%s ",VElement::VEToName(I+A));
 printf("I+B=%s\n",VElement::VEToName(I+B));
 printf("A+O=%s ",VElement::VEToName(A+O));
 printf("A+I=%s ",VElement::VEToName(A+I));
 printf("A+A=%s ",VElement::VEToName(A+A));
 printf("A+B=%s\n",VElement::VEToName(A+B));
 printf("B+O=%s ",VElement::VEToName(B+O));
 printf("B+I=%s ",VElement::VEToName(B+I));
 printf("B+A=%s ",VElement::VEToName(B+A));
 printf("B+B=%s\n",VElement::VEToName(B+B));
    printf("----乘法运算表----\n");
 printf("O*O=%s ",VElement::VEToName(O*O));
 printf("O*I=%s ",VElement::VEToName(O*I));
 printf("O*A=%s ",VElement::VEToName(O*A));
 printf("O*B=%s\n",VElement::VEToName(O*B));
 printf("I*O=%s ",VElement::VEToName(I*O));
 printf("I*I=%s ",VElement::VEToName(I*I));
 printf("I*A=%s ",VElement::VEToName(I*A));
 printf("I*B=%s\n",VElement::VEToName(I*B));
 printf("A*O=%s ",VElement::VEToName(A*O));
 printf("A*I=%s ",VElement::VEToName(A*I));
 printf("A*A=%s ",VElement::VEToName(A*A));
 printf("A*B=%s\n",VElement::VEToName(A*B));
 printf("B*O=%s ",VElement::VEToName(B*O));
 printf("B*I=%s ",VElement::VEToName(B*I));
 printf("B*A=%s ",VElement::VEToName(B*A));
 printf("B*B=%s\n",VElement::VEToName(B*B));
    printf("----减法运算表----\n");
 printf("O-O=%s ",VElement::VEToName(O-O));
 printf("O-I=%s ",VElement::VEToName(O-I));
 printf("O-A=%s ",VElement::VEToName(O-A));
 printf("O-B=%s\n",VElement::VEToName(O-B));
 printf("I-O=%s ",VElement::VEToName(I-O));
 printf("I-I=%s ",VElement::VEToName(I-I));
 printf("I-A=%s ",VElement::VEToName(I-A));
 printf("I-B=%s\n",VElement::VEToName(I-B));
 printf("A-O=%s ",VElement::VEToName(A-O));
 printf("A-I=%s ",VElement::VEToName(A-I));
 printf("A-A=%s ",VElement::VEToName(A-A));
 printf("A-B=%s\n",VElement::VEToName(A-B));
 printf("B-O=%s ",VElement::VEToName(B-O));
 printf("B-I=%s ",VElement::VEToName(B-I));
 printf("B-A=%s ",VElement::VEToName(B-A));
 printf("B-B=%s\n",VElement::VEToName(B-B));
    printf("----除法运算表----\n");
 printf("O/O=%s ",VElement::VEToName(O/O));
 printf("O/I=%s ",VElement::VEToName(O/I));
 printf("O/A=%s ",VElement::VEToName(O/A));
 printf("O/B=%s\n",VElement::VEToName(O/B));
 printf("I/O=%s ",VElement::VEToName(I/O));
 printf("I/I=%s ",VElement::VEToName(I/I));
 printf("I/A=%s ",VElement::VEToName(I/A));
 printf("I/B=%s\n",VElement::VEToName(I/B));
 printf("A/O=%s ",VElement::VEToName(A/O));
 printf("A/I=%s ",VElement::VEToName(A/I));
 printf("A/A=%s ",VElement::VEToName(A/A));
 printf("A/B=%s\n",VElement::VEToName(A/B));
 printf("B/O=%s ",VElement::VEToName(B/O));
 printf("B/I=%s ",VElement::VEToName(B/I));
 printf("B/A=%s ",VElement::VEToName(B/A));
 printf("B/B=%s\n",VElement::VEToName(B/B));
 getchar();
 return 0;
}

#include"stdafx.h"
#include<iostream>
#include<cstdlib>
using namespace std;
/*
有限域F_2上的典型群
2级全线性群GL(2,F_2)=GL_2(F_2)
2级特殊线性群SL(2,F_2)=SL_2(F_2)
6阶群有2个:Z_6,S_3=D_3(正△,2004.12.15)
8阶群有5个:Z_2+Z_2+Z_2,Z_2+Z_4,Z_8,D_4,Q_8
10阶群有2个:Z_10,D_5
12阶群有5个:Z_2+Z_2+Z_3,Z_12,D_6,A_4,T
14阶群有2个:Z_14,D_7
2013.2.28确认
|GL(2,F_2)|=6=16-10
M_2(F_2)={O,I,A,B,C,D,Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10}
其中:F_2上的非奇异2阶方阵有6个:O,I,A,B,C,D,F_2上的奇异2阶方阵有10个:Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10。
6阶非交换群{I,r,r^2,f,fr,fr^2},
1阶元素或乘法单位元:O或I
2阶元素: I,A,B或f,fr,fr^2
3阶元素:C,D或r,r^2
令fr^2f=r=AB=D,
得C=r^2,I=fr,
BA=ffr^2=C。
----6阶群S_3=GL(2,F_2)的乘法运算表----
I*I=I I*fr=fr I*frr=frr I*f=f I*rr=rr I*r=r
fr*I=fr fr*fr=I fr*frr=r fr*f=rr fr*rr=f fr*r=frr
frr*I=frr frr*fr=rr frr*frr=I frr*f=r frr*rr=fr frr*r=f
f*I=f f*fr=r f*frr=rr f*f=I f*rr=frr f*r=fr
rr*I=rr rr*fr=frr rr*frr=f rr*f=fr rr*rr=r rr*r=I
r*I=r r*fr=f r*frr=fr r*f=frr r*rr=I r*r=rr
2p阶非阿贝尔群(p是奇素数)同构于正p边形对称群D_p。
*/
struct ZnElement
{
public:
 static ZnElement g_Error;
 ZnElement(int mod=0,int k=0):m_mod(mod),m_k(k){}
    //加法逆元
 ZnElement InvAdd()const
 {
  for(int i=0;i<this->m_mod;i++)
  {
   if(ZnElement(this->m_mod,i)+(*this)==ZnElement(this->m_mod,0))
    return ZnElement(this->m_mod,i);
  }
  return ZnElement::g_Error;
 }
    ZnElement operator-()
 {
  return (*this).InvAdd();
 }
    ZnElement operator-(const ZnElement &a)
 {
  return (*this)+a.InvAdd();
 }
#if 1
    //乘法逆元
 ZnElement InvMul()const
 {
  for(int i=0;i<this->m_mod;i++)
  {
   if(ZnElement(this->m_mod,i)*(*this)==ZnElement(this->m_mod,1))
    return ZnElement(this->m_mod,i);
  }
  return ZnElement::g_Error;
 }
    ZnElement operator/(const ZnElement &a)
 {
  if(ZnElement::g_Error==a)
   return ZnElement::g_Error;
  return (*this)*a.InvMul();
 }
#endif
    ZnElement operator+(const ZnElement &a)
 {
  ZnElement ret;
  ret.m_mod=m_mod;
  ret.m_k=(m_k+a.m_k)%m_mod;
  return ret;
 }
 //剩余类环中的乘法
    ZnElement operator*(const ZnElement &a)
 {
  ZnElement ret;
  ret.m_mod=m_mod;
  ret.m_k=(m_k*a.m_k)%m_mod;
  return ret;
 }
    bool operator==(const ZnElement & a)
 {
  return (m_mod==a.m_mod&&m_k==a.m_k);
 }
 static ZnElement NameToZnE(const char*name)
 {
    int k=0,mod=0;
  sscanf(name,"[%d]_%d",&k,&mod);
  return ZnElement(mod,k);
 }
 static const char* ZnEToName(const ZnElement & a,int type=0)
 {
  if(type==0)
  {
   static char sz[100]={0};
   sprintf(sz,"[%d]_%d",a.m_k,a.m_mod);
   return sz;
  }
  if(type==1)
  {
   static char sz[100]={0};
   strcpy(sz,MY_ZnEToName(a));
   return sz;
  }
  return "Error";
 }
 static const char* MY_ZnEToName(const ZnElement & a,int mod=2)
 {
  if(mod==2)
  {
   if(ZnElement::NameToZnE("[0]_2")==a)
    return "I";
   if(ZnElement::NameToZnE("[1]_2")==a)
    return "a";
  }
  return "UnKnown";
 }
 friend ostream& operator<< (ostream& os,ZnElement& a);
public:
 int m_mod,m_k;
};
ZnElement ZnElement::g_Error=ZnElement(0,0);
ostream& operator<< (ostream& os,ZnElement& a)
{
 cout<<ZnElement::ZnEToName(a,0);
 return os;
}
//域F上的2阶方阵
struct M2Element
{
public:
 static M2Element g_Error;
 static M2Element s_M2ElementArr[6];
 static const char *s_szArr[6];
 M2Element(ZnElement a11,ZnElement a12,ZnElement a21,ZnElement a22):m_a11(a11),m_a12(a12),m_a21(a21),m_a22(a22){}
 M2Element(int a11,int a12,int a21,int a22)
 {
      m_a11=F2IntToZnElement(a11);
      m_a12=F2IntToZnElement(a12);
      m_a21=F2IntToZnElement(a21);
      m_a22=F2IntToZnElement(a22);
 }
 static ZnElement F2IntToZnElement(int a)
 {
        if(a==0)
   return ZnElement(2,0);
        if(a==1)
   return ZnElement(2,1);
  return ZnElement::g_Error;
 }
 M2Element operator *(const M2Element &m)
 {
  return M2Element( m_a11 * m.m_a11+m_a12 * m.m_a21,m_a11 * m.m_a12+m_a12 * m.m_a22, m_a21 * m.m_a11+m_a22 * m.m_a21, m_a21 * m.m_a12+m_a22 * m.m_a22);
 }
    bool operator==(const M2Element & m)
 {
  return (m_a11==m.m_a11 && m_a12==m.m_a12 && m_a21==m.m_a21 && m_a22==m.m_a22);
 }
 ZnElement det()
 {
  ZnElement ret=m_a11 *m_a22-m_a12*m_a21;
  return ret;
 }
 M2Element inverse()
 {
    ZnElement d=this->det();
    if(d==ZnElement(d.m_mod,0))
     return M2Element::g_Error;
    return M2Element(m_a22/d,-m_a12/d,-m_a21/d,m_a11/d);
 }
 static M2Element NameToM2Element(const char*name)
 {
    for(int i=0;i<6;i++)
    {
     if(strcmp(name,s_szArr[i])==0)
      return s_M2ElementArr[i];
    }
    return M2Element::g_Error;
 }
 static const char* M2ElementToName(const M2Element & a)
 {
    for(int i=0;i<6;i++)
    {
     if(s_M2ElementArr[i]==a)
      return s_szArr[i];
    }
    return "Error";
 }
 //未知6阶群的群元的阶
 static int M2ElementToOrder(const M2Element &idx,const M2Element &m)
 {
  M2Element t=idx;
  for(int i=1;i<=6;i++)
  {
   t=t*m;
   if(t==idx)
    return i;
  }
  return -1;
 }
 friend ostream& operator<< (ostream& os,M2Element& mtx);
public:
 ZnElement m_a11,m_a12,m_a21,m_a22;
};
M2Element M2Element::g_Error=M2Element(ZnElement::g_Error,ZnElement::g_Error,ZnElement::g_Error,ZnElement::g_Error);
M2Element M2Element::s_M2ElementArr[6]={M2Element(1,0,0,1),M2Element(1,1,0,1),M2Element(1,0,1,1),M2Element(0,1,1,0),M2Element(1,1,1,0),M2Element(0,1,1,1)};
const char *M2Element::s_szArr[6]={"O","I","A","B","C","D"};


ostream& operator<< (ostream& os,M2Element& m)
{
 os<<"{{"<<ZnElement::ZnEToName(m.m_a11,0)<<","<<ZnElement::ZnEToName(m.m_a12,0)<<"},{"<<ZnElement::ZnEToName(m.m_a21,0)<<","<<ZnElement::ZnEToName(m.m_a22,0)<<"}}";
 return os;
}
int main()
{
    M2Element O=M2Element::NameToM2Element("O");
    M2Element I=M2Element::NameToM2Element("I");
    M2Element A=M2Element::NameToM2Element("A");
    M2Element B=M2Element::NameToM2Element("B");
    M2Element C=M2Element::NameToM2Element("C");
    M2Element D=M2Element::NameToM2Element("D");
 printf("----未知6阶群群元的阶----\n");
 for(int i=0;i<6;i++)
  printf("M2ElementToOrder(%s)=%d\n",M2Element::s_szArr[i],M2Element::M2ElementToOrder(M2Element::s_M2ElementArr[0],M2Element::s_M2ElementArr[i]));
 
 printf("----未知6阶群的乘法运算表----\n");
 printf("O*O=%s ",M2Element::M2ElementToName(O*O));
 printf("O*I=%s ",M2Element::M2ElementToName(O*I));
 printf("O*A=%s ",M2Element::M2ElementToName(O*A));
 printf("O*B=%s ",M2Element::M2ElementToName(O*B));
 printf("O*C=%s ",M2Element::M2ElementToName(O*C));
 printf("O*D=%s\n",M2Element::M2ElementToName(O*D));
 printf("I*O=%s ",M2Element::M2ElementToName(I*O));
 printf("I*I=%s ",M2Element::M2ElementToName(I*I));
 printf("I*A=%s ",M2Element::M2ElementToName(I*A));
 printf("I*B=%s ",M2Element::M2ElementToName(I*B));
 printf("I*C=%s ",M2Element::M2ElementToName(I*C));
 printf("I*D=%s\n",M2Element::M2ElementToName(I*D));
 printf("A*O=%s ",M2Element::M2ElementToName(A*O));
 printf("A*I=%s ",M2Element::M2ElementToName(A*I));
 printf("A*A=%s ",M2Element::M2ElementToName(A*A));
 printf("A*B=%s ",M2Element::M2ElementToName(A*B));
 printf("A*C=%s ",M2Element::M2ElementToName(A*C));
 printf("A*D=%s\n",M2Element::M2ElementToName(A*D));
 printf("B*O=%s ",M2Element::M2ElementToName(B*O));
 printf("B*I=%s ",M2Element::M2ElementToName(B*I));
 printf("B*A=%s ",M2Element::M2ElementToName(B*A));
 printf("B*B=%s ",M2Element::M2ElementToName(B*B));
 printf("B*C=%s ",M2Element::M2ElementToName(B*C));
 printf("B*D=%s\n",M2Element::M2ElementToName(B*D));
 printf("C*O=%s ",M2Element::M2ElementToName(C*O));
 printf("C*I=%s ",M2Element::M2ElementToName(C*I));
 printf("C*A=%s ",M2Element::M2ElementToName(C*A));
 printf("C*B=%s ",M2Element::M2ElementToName(C*B));
 printf("C*C=%s ",M2Element::M2ElementToName(C*C));
 printf("C*D=%s\n",M2Element::M2ElementToName(C*D));
 printf("D*O=%s ",M2Element::M2ElementToName(D*O));
 printf("D*I=%s ",M2Element::M2ElementToName(D*I));
 printf("D*A=%s ",M2Element::M2ElementToName(D*A));
 printf("D*B=%s ",M2Element::M2ElementToName(D*B));
 printf("D*C=%s ",M2Element::M2ElementToName(D*C));
 printf("D*D=%s\n",M2Element::M2ElementToName(D*D));
 system("pause");
 return 0;
}
/*
  24阶群SL_2(F_3)的一个正规子群Q_8
     群GAP4[ 8, 3 ]=D_4:
  元素,1,a,a^2,a^3,b,ab,a^2b,a^3b
  阶数,1,4,2,4,2,2,2,2
  群GAP4[ 8, 4 ]=Q_8:
  元素,1,a,a^2,a^3,b,ab,a^2b,a^3b
  阶数,1,4,2,4,4,4,4,4
  由于两个群中4阶元素的个数不同,所以D_4和Q_8不同构。
  Q_8={1,-1,i,-i,j,-j,k,-k},
  O=1,I=-1;A,B互为乘法逆元;D,E互为乘法逆元;C,F互为乘法逆元;
  AC=D,CA=E,令A=i,B=-i,C=j,F=-j,
  得D=k,E=-k。
  ----8阶非交换群Q_8的乘法运算表----
  1*1=1 1*-1=-1 1*i=i 1*-i=-i 1*j=j 1*k=k 1*-k=-k 1*-j=-j
  -1*1=-1 -1*-1=1 -1*i=-i -1*-i=i -1*j=-j -1*k=-k -1*-k=k -1*-j=j
  i*1=i i*-1=-i i*i=-1 i*-i=1 i*j=k i*k=-j i*-k=j i*-j=-k
  -i*1=-i -i*-1=i -i*i=1 -i*-i=-1 -i*j=-k -i*k=j -i*-k=-j -i*-j=k
  j*1=j j*-1=-j j*i=-k j*-i=k j*j=-1 j*k=i j*-k=-i j*-j=1
  k*1=k k*-1=-k k*i=j k*-i=-j k*j=-i k*k=-1 k*-k=1 k*-j=i
  -k*1=-k -k*-1=k -k*i=-j -k*-i=j -k*j=i -k*k=1 -k*-k=-1 -k*-j=-i
  -j*1=-j -j*-1=j -j*i=k -j*-i=-k -j*j=1 -j*k=-i -j*-k=i -j*-j=-1
 */
gap> G:=QuaternionGroup(8);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,4,8];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 8 with 3 generators>
[ 8, 4 ]
[ 1, 4, 4, 2, 4, 4, 4, 4 ]
[ 1, 2, 4, 8 ]
1,1,6,0,
连通性:如果从连续群的任意一个元素出发,经过r个参量的连续变化,可以到达单位元素,或者说如果连续群中的任意两个元素可以通过r个参量的连续变化连结起来,则称此连续群是连通的。这样的Lie群称为简单Lie群,否则称为混合Lie群。
----Lie群的连通性定义和它作为拓扑空间的连通性定义应该是一致的,但需要证明
紧致Lie群:如果Lie群的参数空间由有限个有界的区域组成,则称该Lie群为紧致Lie群,否则称为非紧致Lie群。
----Lie群的紧致性定义和它作为拓扑空间的紧致性定义应该是一致的,但需要证明
例如,SO(3)的三个参数是欧拉角,所以SO(3)是紧致Lie群。
例1:实数加法群构成一个1维非紧致简单实Lie群,群参数为群元本身
例2:空间平移群:三维实空间中的所有平移变换构成一个3维的非紧致简单实Lie群
例3:二维特殊酉群SU(2):所有行列式为+1的二维酉矩阵构成的群。
即u={{a,b},{c,d}}满足条件uu^+=E,det(u)=1
SU(2)的群元可以写为u={{a,b},{-b^*,a^*}},|a|^2+|b|^2=1
或写为u={{e^(iξ)cosη,-e^(-iζ)sinη},{e^(iζ)sinη,e^(-iξ)cosη}}
其中ξ,ζ,η为实参量。
SU(2)是一个三维紧致简单Lie群。
----这里的二维是指n=2,三维或三阶是指作为实流形的维数
例4:三维实正交群O(3):所有三维实正交矩阵构成的连续群,群元由3个实参数标记。
群元满足正交条件O^TO=OO^T=E。
O(3)保持实二次形(x_1)^2+(x_2)^2+(x_3)^2不变。
三维实特殊正交群SO(3):所有行列式为+1的3维实正交矩阵构成的连续群,群元由3个实参数标记。
SO(3)={O∈O(3)|det(O)=1}
SO(3)群对应于三维实空间保持原点不变的三维转动群,群元为转动矩阵C^r_k(Ψ),由三个实参量θ,φ,ψ来表征。三维紧致简单Lie群。
三维实正交群O(3)=SO(3)(×){E,I}。由行列式分别为±1的互不连通三维两叶构成,其参数空间包含两个互不连通的区域,是三维紧致混合Lie群。


无限群:由无限个元素构成的群。
例子1:整数加法群构成一个分立无限群,单位元素为0。分立无限群:群元无限可数。
例子2:空间平移群:三维实空间中所有平移变换对变换乘法构成一个连续无限群。
变换乘法:从左向右依次施行变换。
连续无限群:群元无限不可数,可用一组连续变化的参数来描述。
例子3:三维转动群SO(3),三维空间保持原点不变的所有转动构成一个连续无限群。
SO(3)群元可用绕通过原点的任何一个转动轴k转ψ的转动C_k(ψ)表示,由三个连续变化的有界参数(θ,φ,ψ)标记。----这三个参数就是欧拉角
满秩(正则,非奇异)矩阵构成的群:以矩阵的乘法作为群的乘法
例子1:一般复线性群GL(n,C):所有n阶正则复矩阵构成一个2n^2维连续群,群元可用2n^2个实参数标记。
----作为复Lie群,是复n^2维的复流形,是实2n^2维的实流形
一般实线性群GL(n,R):所有n阶正则实矩阵构成一个n^2维连续群,群元可用n^2个实参数标记。
----作为实Lie群,是实n^2维的实流形
例子2:
特殊复线性群SL(n,C):所有行列式为+1的n阶正则复矩阵构成的2(n^2-1)维连续群,群元由2(n^2-1)个实参数标记。
----作为复Lie群,是复(n^2-1)维的复流形,是实2(n^2-1)维的实流形
特殊实线性群SL(n,R):所有行列式为+1的n阶正则实矩阵构成的(n^2-1)维连续群,群元由(n^2-1)个实参数标记。
----作为实Lie群,是实n^2-1维的实流形
例子3:
酉群U(n):所有n阶酉矩阵(u^+u=uu^+=E)构成的n^2维连续群,群元由n^2个实参数标记。
----作为实Lie群,是实n^2维的实流形
特殊酉群SU(n):所有行列式为+1的n阶酉矩阵构成的(n^2-1)维连续群,群元由(n^2-1)个实参数标记。
----作为实Lie群,是实n^2-1维的实流形
例子4:
复正交群O(n,C):所有n阶复正交矩阵o(o^To=oo^T=E)构成的(n^2-n)维连续群,群元由2(n^2-n)个实参数标记。
----??
实特殊正交群SO(n,R):所有行列式为+1的n阶实正交矩阵构成的(n^2-n)/2维连续群,群元由(n^2-n)/2个实参数标记。
子群的定义:假设H是群G的一个非空子集,若子集H中的元素按照G的乘法构成一个群,则称H为G的子群,记为H{<}G。
单位元和群G本身都是群G的子群,称为平庸子群。
如果G_1{<}G,G_2{<}G_1,则G_2{<}G。
例1:平面正三角形对称群D_3,C_3,C_2均为D_3的子群。
例2:奇n阶循环群没有非平庸子群。??C_3¢C_9
例3:从有限群中的任一元素a出发,都能生成该群的一个循环子群。
例4:8种典型Lie群(一般复线性群,特殊复线性群,酉群,复正交群,特殊实线性群,特殊酉群,实正交群,特殊实正交群)的关系:
SL(n,R){<}SL(n,C){<}GL(n,C)
SU(n){<}U(n){<}GL(n,C)
SO(n,R){<}O(n,R){<}O(n,C){<}GL(n,C)
微分方程李群理论的一些探索与应用http://www.docin.com/p-98270021.html
阿贝尔与伽罗瓦的工作揭示了群论在方程论中的重要意义。用阿贝尔与伽罗瓦的某些思想,刘维尔证明了除一些特殊情况外,绝大多数的Riccati方程及更复杂的方程的通积分是不能通过对方程系数进行有限次的代数运算及有限次的微积分运算而求得的,或用刘维尔的说法通解不能用有限的方式表示。在刘维尔之后,微分方程的研究一部分转向定性理论,另一个重要的研究方向是仿照阿贝尔、伽罗瓦的思想,设法将群论与方程的可积性理论相结合。
Lie将群论应用到微分方程的可积性研究中,Lie在研究微分方程的在什么变换下不变时,创造了连续变换群理论,现在一般称为Lie群理论。
李群早期发展的历史研究http://www.docin.com/p-448925990.html
关于TKK代数表示理论的研究http://www.docin.com/p-298409896.html
Lie群和Lie代数理论起始于19世纪末。Lie群概念是Lie在研究微分方程的对称性(即在变换下的不变性)的过程中提出的。Lie将微积分和群论结合起来,长期从事连续变换群及其不变量的研究,是连续变换群理论的创始人。几何与分析领域的自同构变换群,其本身通常也会具有自然的几何或分析的结构,Lie群正是这样一种结构体,它同时具有群和可微结构,而且群的运算对于其可微结构来说是可微的。
Lie群的研究最初都是从局部的观点来考虑,随着一般拓扑学的发展,数学家们开始从整体的观点上对Lie群的结构进行系统的研究,从而形成了近代的Lie群理论,其中的代表是老嘉当和外尔。1938年,庞特里亚金给出了Lie群理论的第一个近代化的叙述。20世纪初称为Lie群理论,中期称为Lie群、Lie代数理论,后期称为Lie理论。
Lie代数来源于Lie群,最初是作为研究Lie群的代数工具而引进的,Lie代数的经典理论的重要性主要在于它对Lie群的应用。Lie群就是可微分的群。微分的基本想法就是在无穷小的层面上的线性化,因此可以自然地想到Lie群的结构应该具有它的线性化所得的一种“无穷小群”的结构,这就是Lie在可微分的群的结构理论上的重大成就,他认识到关于可微群的大量信息已被包含在它的“群的无穷小变换”的代数中,而且这种代数作为线性对象在许多方面都比可微群本身更容器研究。当时人们使用“群的无穷小变换”和“无穷小群”等术语来称呼这种数理模型。1934年,外尔正式引进Lie代数这一术语,并指出Lie代数具有独立研讨的价值,随后的数学的发展已经证实了他的远见。Lie代数已成为一个独立的数学分支,而不再仅仅作为研究Lie群的代数工具。


http://groupprops.subwiki.org/wiki/Groups_of_order_24
http://groupprops.subwiki.org/wiki/Direct_product_of_E8_and_Z3
http://groupprops.subwiki.org/wiki/Elementary_abelian_group:E8
20100918-20140508补充说明:
Lagrange群:包括有限Abel群和部分有限Abel群,是使Lagrange定理之逆成立的有限群。
PGL(2,2)=PSL(2,2)=S_3=D_3是一个6阶非阿贝尔非哈密顿拉格朗日群
NSg(S_3)={S_3,C_3,C_1}!=Sg(S_3)={S_3,C_3,3*C_2,C_1}
正四面体群A_4=PSL(2,3)是最小非Lagrange群非交换(12阶非阿贝尔非哈密顿群非拉格朗日群),没有6阶的子群,非哈密顿
NSg(A_4)={A_4,V,C_1}!=Sg(A_4)={A_4,V,4*C_3,3*C_2,C_1}
D_6=D_3×C_2是12阶非交换Lagrange群,非哈密顿
12阶双循环群Dic_3=Q_12是12阶非交换Lagrange群,非哈密顿
正多面体只有5种,即正四面体、正六面体、正八面体、正十二面体、正二十面体。
于是有正四面体群T=A_4(12阶)、正六(八)面体群O=S_4=PGL(2,3)(24阶)、正十二(二十)面体群I=A_5(60阶)等三种群。


存在24阶的15群:


1个循环群----GAP4[ 24, 2 ]=G24_1=C_24,


2个非循环阿贝尔群----GAP4[ 24, 9 ]=G24_2=C_6×C_4=C_12×C_2=U35=U39,GAP4[ 24, 15 ]=G24_3=C_6×K_4=E_8×C_3=C_2×C_2×C_2×C_3=U84

gap> U35:=Units(Integers mod 35);;IdGroup(U35);
[ 24, 9 ]
gap> U39:=Units(Integers mod 39);;IdGroup(U39);
[ 24, 9 ]
gap> U84:=Units(Integers mod 84);;IdGroup(U84);
[ 24, 15 ]

1个二面体群----二面体群GAP4[ 24, 6 ]=G24_8=D_12(也是非幂零可解群),

gap> G:=DihedralGroup(24);IdGroup(G);IsAbelian(G);IsNilpotentGroup(G);IsSupersolvableGroup(G);IsSolvableGroup(G);
<pc group of size 24 with 4 generators>
[ 24, 6 ]
false
false
true
true

2个非阿贝尔幂零群----GAP4[ 24, 10 ]=G24_11=D_4×C_3,GAP4[ 24, 11 ]=G24_12=Q_8×C_3,


除24阶二面体群外的9个非幂零可解群----


特殊线性群GAP4[ 24, 3 ]=G24_5=SL_2(F_3),


双循环群GAP4[ 24, 4 ]=G24_6=Dic24=Q_24,


GAP4[ 24, 7 ]=G24_9=Q_12×C_2,


GAP4[ 24, 14 ]=G24_15=S_3×K_4=D_6×C_2!=S_4,


GAP4[ 24, 13 ]=G24_14=A_4×C_2,


GAP4[ 24, 5 ]=G24_7=S_3×C_4=D_3×C_4,
GAP4[ 24, 12 ]=G24_13=S_4=C_3×|D_4(C_3和D_4的在核K_4下的半直积):没有6,8,12阶元
S_4有1个1阶元,9个2阶元,8个3阶元,6个4阶元,0个6阶元,0个8阶元,0个12阶元,0个24阶元
剩下2个未知的24阶非幂零可解群:
GAP4[ 24, 1 ]=G24_4=C_3×|C_8(C_3和C_8的非平凡半直积)=U_24=U_6*4(U_6n(n=4))=<a,x|a^3=x^8=e,xax^(-1)=a^(-1)>:有6,8,12阶元
GAP4[ 24, 8 ]=G24_10=V_24(V_8n(n=3))=<a,b|a^6=b^4=1,ba=a^(-1)b^(-1),b^(-1)a=a^(-1)b>:有6阶元,没有8,12阶元
GAP4[ 24, 1 ]=G24_4有1个1阶元,1个2阶元,2个3阶元,2个4阶元,2个6阶元,12个8阶元,4个12阶元,0个24阶元
GAP4[ 24, 8 ]=G24_10有1个1阶元,9个2阶元,2个3阶元,6个4阶元,6个6阶元,0个8阶元,0个12阶元,0个24阶元
gap> G:=SmallGroup(24,1);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 1 ]
[ 1, 8, 4, 2, 3, 8, 8, 8, 4, 12, 6, 3, 8, 8, 8, 8, 12, 12, 6, 8, 8, 8, 12, 8 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,1,2,2,2,12,4,0,
gap> G:=SmallGroup(24,8);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 8 ]
[ 1, 2, 2, 2, 3, 4, 2, 2, 2, 6, 6, 3, 4, 4, 2, 2, 6, 6, 6, 4, 4, 2, 6, 4 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,9,2,6,6,0,0,0,


3个24阶的阿贝尔群:


----24阶循环群C_24群元的阶----


//1个1阶元,1个2阶元,2个3阶元,2个4阶元,2个6阶元,4个8阶元,4个12阶元,8个24阶元


20151005补充说明:
gap> G:=CyclicGroup(24);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 2 ]
[ 1, 24, 12, 6, 3, 8, 24, 8, 4, 12, 2, 3, 24, 24, 24, 24, 12, 4, 6, 8, 24, 8, 12, 24 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,1,2,2,2,4,4,8,


----24阶交换群C_6×K_4=U84群元的阶----


//1个1阶元,7个2阶元,2个3阶元,14个6阶元


gap> G:=DirectProduct(CyclicGroup(6),CyclicGroup(2),CyclicGroup(2));IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 15 ]
[ 1, 6, 3, 2, 2, 2, 6, 6, 3, 6, 6, 2, 6, 2, 2, 6, 6, 6, 6, 6, 6, 2, 6, 6 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,7,2,0,14,0,0,0,


----24阶交换群C_6×C_4=U35=U39群元的阶----


//1个1阶元,3个2阶元,2个3阶元,4个4阶元,6个6阶元,8个12阶元


gap> G:=DirectProduct(CyclicGroup(6),CyclicGroup(4));IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 9 ]
[ 1, 6, 3, 4, 2, 2, 12, 6, 3, 12, 6, 4, 6, 4, 2, 12, 12, 6, 12, 12, 6, 4, 12, 12 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,3,2,4,6,0,8,0,


12个24阶的非阿贝尔群:


----24阶非交换群Q_8×C_3群元的阶----


//1个1阶元,1个2阶元,2个3阶元,6个4阶元,2个6阶元,12个12阶元


gap> G:=DirectProduct(CyclicGroup(3),QuaternionGroup(8));IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 11 ]
[ 1, 3, 4, 4, 2, 3, 12, 12, 6, 4, 4, 4, 12, 12, 6, 12, 12, 12, 4, 12, 12, 12, 12, 12 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,1,2,6,2,0,12,0,


----24阶非交换群M_24=D_4×C_3群元的阶----


//1个1阶元,5个2阶元,2个3阶元,2个4阶元,10个6阶元,4个12阶元


gap> G:=DirectProduct(CyclicGroup(3),DihedralGroup(8));IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 10 ]
[ 1, 3, 2, 4, 2, 3, 6, 12, 6, 2, 2, 4, 6, 12, 6, 6, 6, 12, 2, 6, 6, 12, 6, 6 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,5,2,2,10,0,4,0,


----24阶非交换群D_12群元的阶----


//1个1阶元,13个2阶元,2个3阶元,2个4阶元,2个6阶元,4个12阶元


gap> G:=DihedralGroup(24);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 6 ]
[ 1, 2, 12, 6, 3, 2, 2, 2, 4, 12, 2, 3, 2, 2, 2, 2, 12, 4, 6, 2, 2, 2, 12, 2 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,13,2,2,2,0,4,0,


证明:S_4!=S_3×K_4=D_6×C_2
----24阶非交换群S_4群元的阶----


20140606更正后的结果:S_4有1个1阶元,9个2阶元,8个3阶元,6个4阶元,0个6阶元,0个8阶元,0个12阶元,0个24阶元


错误的结果://1个1阶元,15个2阶元,2个3阶元,6个6阶元


gap> G:=SymmetricGroup(4);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
Sym( [ 1 .. 4 ] )
[ 24, 12 ]
[ 1, 2, 2, 3, 3, 2, 2, 2, 3, 4, 4, 3, 3, 4, 2, 3, 2, 4, 4, 3, 3, 2, 4, 2 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,9,8,6,0,0,0,0,

----24阶非交换群S_3×K_4=D_6×C_2群元的阶----
//1个1阶元,15个2阶元,2个3阶元,6个6阶元
gap> G:=DirectProduct(CyclicGroup(2),DihedralGroup(12));IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 14 ]
[ 1, 2, 2, 6, 3, 2, 6, 6, 2, 2, 2, 3, 2, 2, 2, 6, 2, 2, 6, 2, 2, 6, 2, 2 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,15,2,0,6,0,0,0,


----24阶非交换群Q_24群元的阶----


//1个1阶元,1个2阶元,2个3阶元,14个4阶元,2个6阶元,4个12阶元


gap> G:=QuaternionGroup(24);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 4 ]
[ 1, 4, 12, 6, 2, 4, 4, 4, 4, 12, 3, 3, 4, 4, 4, 4, 12, 4, 6, 4, 4, 4, 12, 4 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,1,2,14,2,0,4,0,


----24阶非交换群A_4×C_2群元的阶----


//1个1阶元,7个2阶元,8个3阶元,8个6阶元


gap> G:=DirectProduct(CyclicGroup(2),AlternatingGroup(4));IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<group of size 24 with 3 generators>
[ 24, 13 ]
[ 1, 3, 3, 2, 3, 3, 3, 3, 2, 3, 3, 2, 2, 6, 6, 2, 6, 6, 6, 6, 2, 6, 6, 2 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,7,8,0,8,0,0,0,


----24阶非交换群Q_12×C_2群元的阶----


//1个1阶元,3个2阶元,2个3阶元,12个4阶元,6个6阶元


gap> G:=DirectProduct(CyclicGroup(2),QuaternionGroup(12));IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 24 with 4 generators>
[ 24, 7 ]
[ 1, 2, 4, 6, 2, 4, 6, 2, 4, 4, 3, 3, 4, 4, 6, 6, 4, 4, 6, 4, 4, 6, 4, 4 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,3,2,12,6,0,0,0,


----24阶非交换群SL_2(F_3)群元的阶----


//1个1阶元,1个2阶元,8个3阶元,6个4阶元,8个6阶元


gap> G:=SL(2,3);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
SL(2,3)
[ 24, 3 ]
[ 4, 6, 3, 4, 6, 3, 1, 3, 3, 3, 4, 6, 3, 6, 4, 2, 6, 6, 6, 4, 3, 6, 3, 4 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,1,8,6,8,0,0,0,


----24阶非交换群QD_24=S_3×C_4=D_3×C_4群元的阶----


//1个1阶元,7个2阶元,2个3阶元,8个4阶元,2个6阶元,4个12阶元


gap> G:=DirectProduct(CyclicGroup(4),SymmetricGroup(3));IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,8,12,24];for i in M do Print(Size(Positions(L,i)),","); od;
<group of size 24 with 4 generators>
[ 24, 5 ]
[ 1, 2, 2, 3, 3, 2, 4, 4, 4, 12, 12, 4, 2, 2, 2, 6, 6, 2, 4, 4, 4, 12, 12, 4 ]
[ 1, 2, 3, 4, 6, 8, 12, 24 ]
1,7,2,8,2,0,4,0,


/*
D_6,A_4和Dic_3=Q_12=<a,b|a^6=1,b^2=a^3,ba=a^(-1)b>彼此不同构。
按:b^(-1)ab=a^(-1)<=>a^(-1)b=b^(-1)abb=b^(-1)a^4=ba^3a^4=ba,其中,b^4=1,b^(-1)=b^3。
首先,GAP4[ 12, 1 ]=Dic_3中有4阶元素b,而D_6和A_4均没有4阶元素,从而Dic_3与D_6、A_4不同构。其次,GAP4[ 12, 4 ]=D_6中有7个二阶元素:a^3,a^ib(0<=i<=5),而GAP4[ 12, 3 ]=A_4中只有3个二阶元素(12)(34),(13)(24),(14)(23)。从而D_6与A_4也不同构。
定理:5种12阶群与它们的群元阶的分布一一对应[ 1, 2, 3, 4, 6,12]
GAP4[12,1]:1,1,2,6,2,0,
GAP4[12,2]:1,1,2,2,2,4,
GAP4[12,3]:1,3,8,0,0,0,
GAP4[12,4]:1,7,2,0,2,0,
GAP4[12,5]:1,3,2,0,6,0,

*/
----12阶非循环阿贝尔群GAP4[ 12, 5 ]=C_2+C_2+C_3群元的阶----
G12ElementToOrder(O)=1
G12ElementToOrder(A)=3
G12ElementToOrder(B)=3
G12ElementToOrder(C)=2
G12ElementToOrder(D)=6
G12ElementToOrder(E)=6
G12ElementToOrder(F)=2
G12ElementToOrder(G)=6
G12ElementToOrder(H)=6
G12ElementToOrder(I)=2
G12ElementToOrder(J)=6
G12ElementToOrder(K)=6
O^-1=O A^-1=B B^-1=A C^-1=C D^-1=E E^-1=D F^-1=F G^-1=H H^-1=G I^-1=I J^-1=K K^-1=J
----GAP4[ 12, 5 ]=C_2+C_2+C_3乘法运算表----
O*O=O O*A=A O*B=B O*C=C O*D=D O*E=E O*F=F O*G=G O*H=H O*I=I O*J=J O*K=K
A*O=A A*A=B A*B=O A*C=D A*D=E A*E=C A*F=G A*G=H A*H=F A*I=J A*J=K A*K=I
B*O=B B*A=O B*B=A B*C=E B*D=C B*E=D B*F=H B*G=F B*H=G B*I=K B*J=I B*K=J
C*O=C C*A=D C*B=E C*C=O C*D=A C*E=B C*F=I C*G=J C*H=K C*I=F C*J=G C*K=H
D*O=D D*A=E D*B=C D*C=A D*D=B D*E=O D*F=J D*G=K D*H=I D*I=G D*J=H D*K=F
E*O=E E*A=C E*B=D E*C=B E*D=O E*E=A E*F=K E*G=I E*H=J E*I=H E*J=F E*K=G
F*O=F F*A=G F*B=H F*C=I F*D=J F*E=K F*F=O F*G=A F*H=B F*I=C F*J=D F*K=E
G*O=G G*A=H G*B=F G*C=J G*D=K G*E=I G*F=A G*G=B G*H=O G*I=D G*J=E G*K=C
H*O=H H*A=F H*B=G H*C=K H*D=I H*E=J H*F=B H*G=O H*H=A H*I=E H*J=C H*K=D
I*O=I I*A=J I*B=K I*C=F I*D=G I*E=H I*F=C I*G=D I*H=E I*I=O I*J=A I*K=B
J*O=J J*A=K J*B=I J*C=G J*D=H J*E=F J*F=D J*G=E J*H=C J*I=A J*J=B J*K=O
K*O=K K*A=I K*B=J K*C=H K*D=F K*E=G K*F=E K*G=C K*H=D K*I=B K*J=O K*K=A
----GAP4[ 12, 5 ]=C_2+C_2+C_3除法运算表----
O/O=O O/A=B O/B=A O/C=C O/D=E O/E=D O/F=F O/G=H O/H=G O/I=I O/J=K O/K=J
A/O=A A/A=O A/B=B A/C=D A/D=C A/E=E A/F=G A/G=F A/H=H A/I=J A/J=I A/K=K
B/O=B B/A=A B/B=O B/C=E B/D=D B/E=C B/F=H B/G=G B/H=F B/I=K B/J=J B/K=I
C/O=C C/A=E C/B=D C/C=O C/D=B C/E=A C/F=I C/G=K C/H=J C/I=F C/J=H C/K=G
D/O=D D/A=C D/B=E D/C=A D/D=O D/E=B D/F=J D/G=I D/H=K D/I=G D/J=F D/K=H
E/O=E E/A=D E/B=C E/C=B E/D=A E/E=O E/F=K E/G=J E/H=I E/I=H E/J=G E/K=F
F/O=F F/A=H F/B=G F/C=I F/D=K F/E=J F/F=O F/G=B F/H=A F/I=C F/J=E F/K=D
G/O=G G/A=F G/B=H G/C=J G/D=I G/E=K G/F=A G/G=O G/H=B G/I=D G/J=C G/K=E
H/O=H H/A=G H/B=F H/C=K H/D=J H/E=I H/F=B H/G=A H/H=O H/I=E H/J=D H/K=C
I/O=I I/A=K I/B=J I/C=F I/D=H I/E=G I/F=C I/G=E I/H=D I/I=O I/J=B I/K=A
J/O=J J/A=I J/B=K J/C=G J/D=F J/E=H J/F=D J/G=C J/H=E J/I=A J/J=O J/K=B
K/O=K K/A=J K/B=I K/C=H K/D=G K/E=F K/F=E K/G=D K/H=C K/I=B K/J=A K/K=O
----12阶非交换群GAP4[ 12, 4 ]=D_6群元的阶----
G12ElementToOrder(O)=1
G12ElementToOrder(A)=3
G12ElementToOrder(B)=3
G12ElementToOrder(C)=2
G12ElementToOrder(D)=6
G12ElementToOrder(E)=6
G12ElementToOrder(F)=2
G12ElementToOrder(G)=2
G12ElementToOrder(H)=2
G12ElementToOrder(I)=2
G12ElementToOrder(J)=2
G12ElementToOrder(K)=2
O^-1=O A^-1=B B^-1=A C^-1=C D^-1=E E^-1=D F^-1=F G^-1=G H^-1=H I^-1=I J^-1=J K^-1=K
----GAP4[ 12, 4 ]=D_6乘法运算表----
O*O=O O*A=A O*B=B O*C=C O*D=D O*E=E O*F=F O*G=G O*H=H O*I=I O*J=J O*K=K
A*O=A A*A=B A*B=O A*C=D A*D=E A*E=C A*F=H A*G=F A*H=G A*I=K A*J=I A*K=J
B*O=B B*A=O B*B=A B*C=E B*D=C B*E=D B*F=G B*G=H B*H=F B*I=J B*J=K B*K=I
C*O=C C*A=D C*B=E C*C=O C*D=A C*E=B C*F=I C*G=J C*H=K C*I=F C*J=G C*K=H
D*O=D D*A=E D*B=C D*C=A D*D=B D*E=O D*F=K D*G=I D*H=J D*I=H D*J=F D*K=G
E*O=E E*A=C E*B=D E*C=B E*D=O E*E=A E*F=J E*G=K E*H=I E*I=G E*J=H E*K=F
F*O=F F*A=G F*B=H F*C=I F*D=J F*E=K F*F=O F*G=A F*H=B F*I=C F*J=D F*K=E
G*O=G G*A=H G*B=F G*C=J G*D=K G*E=I G*F=B G*G=O G*H=A G*I=E G*J=C G*K=D
H*O=H H*A=F H*B=G H*C=K H*D=I H*E=J H*F=A H*G=B H*H=O H*I=D H*J=E H*K=C
I*O=I I*A=J I*B=K I*C=F I*D=G I*E=H I*F=C I*G=D I*H=E I*I=O I*J=A I*K=B
J*O=J J*A=K J*B=I J*C=G J*D=H J*E=F J*F=E J*G=C J*H=D J*I=B J*J=O J*K=A
K*O=K K*A=I K*B=J K*C=H K*D=F K*E=G K*F=D K*G=E K*H=C K*I=A K*J=B K*K=O
----GAP4[ 12, 4 ]=D_6除法运算表----
O/O=O O/A=B O/B=A O/C=C O/D=E O/E=D O/F=F O/G=G O/H=H O/I=I O/J=J O/K=K
A/O=A A/A=O A/B=B A/C=D A/D=C A/E=E A/F=H A/G=F A/H=G A/I=K A/J=I A/K=J
B/O=B B/A=A B/B=O B/C=E B/D=D B/E=C B/F=G B/G=H B/H=F B/I=J B/J=K B/K=I
C/O=C C/A=E C/B=D C/C=O C/D=B C/E=A C/F=I C/G=J C/H=K C/I=F C/J=G C/K=H
D/O=D D/A=C D/B=E D/C=A D/D=O D/E=B D/F=K D/G=I D/H=J D/I=H D/J=F D/K=G
E/O=E E/A=D E/B=C E/C=B E/D=A E/E=O E/F=J E/G=K E/H=I E/I=G E/J=H E/K=F
F/O=F F/A=H F/B=G F/C=I F/D=K F/E=J F/F=O F/G=A F/H=B F/I=C F/J=D F/K=E
G/O=G G/A=F G/B=H G/C=J G/D=I G/E=K G/F=B G/G=O G/H=A G/I=E G/J=C G/K=D
H/O=H H/A=G H/B=F H/C=K H/D=J H/E=I H/F=A H/G=B H/H=O H/I=D H/J=E H/K=C
I/O=I I/A=K I/B=J I/C=F I/D=H I/E=G I/F=C I/G=D I/H=E I/I=O I/J=A I/K=B
J/O=J J/A=I J/B=K J/C=G J/D=F J/E=H J/F=E J/G=C J/H=D J/I=B J/J=O J/K=A
K/O=K K/A=J K/B=I K/C=H K/D=G K/E=F K/F=D K/G=E K/H=C K/I=A K/J=B K/K=O
----12阶非交换群GAP4[ 12, 3 ]=A_4群元的阶----
G12ElementToOrder(O)=1
G12ElementToOrder(A)=2
G12ElementToOrder(B)=2
G12ElementToOrder(C)=2
G12ElementToOrder(D)=3
G12ElementToOrder(E)=3
G12ElementToOrder(F)=3
G12ElementToOrder(G)=3
G12ElementToOrder(H)=3
G12ElementToOrder(I)=3
G12ElementToOrder(J)=3
G12ElementToOrder(K)=3
O^-1=O A^-1=A B^-1=B C^-1=C D^-1=H E^-1=J F^-1=K G^-1=I H^-1=D I^-1=G J^-1=E K^-1=F
----GAP4[ 12, 3 ]=A_4乘法运算表----
O*O=O O*A=A O*B=B O*C=C O*D=D O*E=E O*F=F O*G=G O*H=H O*I=I O*J=J O*K=K
A*O=A A*A=O A*B=C A*C=B A*D=G A*E=F A*F=E A*G=D A*H=J A*I=K A*J=H A*K=I
B*O=B B*A=C B*B=O B*C=A B*D=E B*E=D B*F=G B*G=F B*H=K B*I=J B*J=I B*K=H
C*O=C C*A=B C*B=A C*C=O C*D=F C*E=G C*F=D C*G=E C*H=I C*I=H C*J=K C*K=J
D*O=D D*A=E D*B=F D*C=G D*D=H D*E=I D*F=J D*G=K D*H=O D*I=A D*J=B D*K=C
E*O=E E*A=D E*B=G E*C=F E*D=K E*E=J E*F=I E*G=H E*H=B E*I=C E*J=O E*K=A
F*O=F F*A=G F*B=D F*C=E F*D=I F*E=H F*F=K F*G=J F*H=C F*I=B F*J=A F*K=O
G*O=G G*A=F G*B=E G*C=D G*D=J G*E=K G*F=H G*G=I G*H=A G*I=O G*J=C G*K=B
H*O=H H*A=I H*B=J H*C=K H*D=O H*E=A H*F=B H*G=C H*H=D H*I=E H*J=F H*K=G
I*O=I I*A=H I*B=K I*C=J I*D=C I*E=B I*F=A I*G=O I*H=F I*I=G I*J=D I*K=E
J*O=J J*A=K J*B=H J*C=I J*D=A J*E=O J*F=C J*G=B J*H=G J*I=F J*J=E J*K=D
K*O=K K*A=J K*B=I K*C=H K*D=B K*E=C K*F=O K*G=A K*H=E K*I=D K*J=G K*K=F
----GAP4[ 12, 3 ]=A_4除法运算表----
O/O=O O/A=A O/B=B O/C=C O/D=H O/E=J O/F=K O/G=I O/H=D O/I=G O/J=E O/K=F
A/O=A A/A=O A/B=C A/C=B A/D=J A/E=H A/F=I A/G=K A/H=G A/I=D A/J=F A/K=E
B/O=B B/A=C B/B=O B/C=A B/D=K B/E=I B/F=H B/G=J B/H=E B/I=F B/J=D B/K=G
C/O=C C/A=B C/B=A C/C=O C/D=I C/E=K C/F=J C/G=H C/H=F C/I=E C/J=G C/K=D
D/O=D D/A=E D/B=F D/C=G D/D=O D/E=B D/F=C D/G=A D/H=H D/I=K D/J=I D/K=J
E/O=E E/A=D E/B=G E/C=F E/D=B E/E=O E/F=A E/G=C E/H=K E/I=H E/J=J E/K=I
F/O=F F/A=G F/B=D F/C=E F/D=C F/E=A F/F=O F/G=B F/H=I F/I=J F/J=H F/K=K
G/O=G G/A=F G/B=E G/C=D G/D=A G/E=C G/F=B G/G=O G/H=J G/I=I G/J=K G/K=H
H/O=H H/A=I H/B=J H/C=K H/D=D H/E=F H/F=G H/G=E H/H=O H/I=C H/J=A H/K=B
I/O=I I/A=H I/B=K I/C=J I/D=F I/E=D I/F=E I/G=G I/H=C I/I=O I/J=B I/K=A
J/O=J J/A=K J/B=H J/C=I J/D=G J/E=E J/F=D J/G=F J/H=A J/I=B J/J=O J/K=C
K/O=K K/A=J K/B=I K/C=H K/D=E K/E=G K/F=F K/G=D K/H=B K/I=A K/J=C K/K=O
----12阶非交换群GAP4[ 12, 1 ]=Dic_3=Q_12群元的阶----
G12ElementToOrder(O)=1
G12ElementToOrder(A)=3
G12ElementToOrder(B)=3
G12ElementToOrder(C)=2
G12ElementToOrder(D)=6
G12ElementToOrder(E)=6
G12ElementToOrder(F)=4
G12ElementToOrder(G)=4
G12ElementToOrder(H)=4
G12ElementToOrder(I)=4
G12ElementToOrder(J)=4
G12ElementToOrder(K)=4
O^-1=O A^-1=B B^-1=A C^-1=C D^-1=E E^-1=D F^-1=I G^-1=J H^-1=K I^-1=F J^-1=G K^-1=H
----GAP4[ 12, 1 ]=Dic_3=Q_12乘法运算表----
O*O=O O*A=A O*B=B O*C=C O*D=D O*E=E O*F=F O*G=G O*H=H O*I=I O*J=J O*K=K
A*O=A A*A=B A*B=O A*C=D A*D=E A*E=C A*F=H A*G=F A*H=G A*I=K A*J=I A*K=J
B*O=B B*A=O B*B=A B*C=E B*D=C B*E=D B*F=G B*G=H B*H=F B*I=J B*J=K B*K=I
C*O=C C*A=D C*B=E C*C=O C*D=A C*E=B C*F=I C*G=J C*H=K C*I=F C*J=G C*K=H
D*O=D D*A=E D*B=C D*C=A D*D=B D*E=O D*F=K D*G=I D*H=J D*I=H D*J=F D*K=G
E*O=E E*A=C E*B=D E*C=B E*D=O E*E=A E*F=J E*G=K E*H=I E*I=G E*J=H E*K=F
F*O=F F*A=G F*B=H F*C=I F*D=J F*E=K F*F=C F*G=D F*H=E F*I=O F*J=A F*K=B
G*O=G G*A=H G*B=F G*C=J G*D=K G*E=I G*F=E G*G=C G*H=D G*I=B G*J=O G*K=A
H*O=H H*A=F H*B=G H*C=K H*D=I H*E=J H*F=D H*G=E H*H=C H*I=A H*J=B H*K=O
I*O=I I*A=J I*B=K I*C=F I*D=G I*E=H I*F=O I*G=A I*H=B I*I=C I*J=D I*K=E
J*O=J J*A=K J*B=I J*C=G J*D=H J*E=F J*F=B J*G=O J*H=A J*I=E J*J=C J*K=D
K*O=K K*A=I K*B=J K*C=H K*D=F K*E=G K*F=A K*G=B K*H=O K*I=D K*J=E K*K=C
----GAP4[ 12, 1 ]=Dic_3=Q_12除法运算表----
O/O=O O/A=B O/B=A O/C=C O/D=E O/E=D O/F=I O/G=J O/H=K O/I=F O/J=G O/K=H
A/O=A A/A=O A/B=B A/C=D A/D=C A/E=E A/F=K A/G=I A/H=J A/I=H A/J=F A/K=G
B/O=B B/A=A B/B=O B/C=E B/D=D B/E=C B/F=J B/G=K B/H=I B/I=G B/J=H B/K=F
C/O=C C/A=E C/B=D C/C=O C/D=B C/E=A C/F=F C/G=G C/H=H C/I=I C/J=J C/K=K
D/O=D D/A=C D/B=E D/C=A D/D=O D/E=B D/F=H D/G=F D/H=G D/I=K D/J=I D/K=J
E/O=E E/A=D E/B=C E/C=B E/D=A E/E=O E/F=G E/G=H E/H=F E/I=J E/J=K E/K=I
F/O=F F/A=H F/B=G F/C=I F/D=K F/E=J F/F=O F/G=A F/H=B F/I=C F/J=D F/K=E
G/O=G G/A=F G/B=H G/C=J G/D=I G/E=K G/F=B G/G=O G/H=A G/I=E G/J=C G/K=D
H/O=H H/A=G H/B=F H/C=K H/D=J H/E=I H/F=A H/G=B H/H=O H/I=D H/J=E H/K=C
I/O=I I/A=K I/B=J I/C=F I/D=H I/E=G I/F=C I/G=D I/H=E I/I=O I/J=A I/K=B
J/O=J J/A=I J/B=K J/C=G J/D=F J/E=H J/F=E J/G=C J/H=D J/I=B J/J=O J/K=A
K/O=K K/A=J K/B=I K/C=H K/D=G K/E=F K/F=D K/G=E K/H=C K/I=A K/J=B K/K=O
----C_12群元的阶----
G12ElementToOrder(O)=1
G12ElementToOrder(A)=12
G12ElementToOrder(B)=6
G12ElementToOrder(C)=4
G12ElementToOrder(D)=3
G12ElementToOrder(E)=12
G12ElementToOrder(F)=2
G12ElementToOrder(G)=12
G12ElementToOrder(H)=3
G12ElementToOrder(I)=4
G12ElementToOrder(J)=6
G12ElementToOrder(K)=12
O^-1=O A^-1=K B^-1=J C^-1=I D^-1=H E^-1=G F^-1=F G^-1=E H^-1=D I^-1=C J^-1=B K^-1=A
----C_12乘法运算表----
O*O=O O*A=A O*B=B O*C=C O*D=D O*E=E O*F=F O*G=G O*H=H O*I=I O*J=J O*K=K
A*O=A A*A=B A*B=C A*C=D A*D=E A*E=F A*F=G A*G=H A*H=I A*I=J A*J=K A*K=O
B*O=B B*A=C B*B=D B*C=E B*D=F B*E=G B*F=H B*G=I B*H=J B*I=K B*J=O B*K=A
C*O=C C*A=D C*B=E C*C=F C*D=G C*E=H C*F=I C*G=J C*H=K C*I=O C*J=A C*K=B
D*O=D D*A=E D*B=F D*C=G D*D=H D*E=I D*F=J D*G=K D*H=O D*I=A D*J=B D*K=C
E*O=E E*A=F E*B=G E*C=H E*D=I E*E=J E*F=K E*G=O E*H=A E*I=B E*J=C E*K=D
F*O=F F*A=G F*B=H F*C=I F*D=J F*E=K F*F=O F*G=A F*H=B F*I=C F*J=D F*K=E
G*O=G G*A=H G*B=I G*C=J G*D=K G*E=O G*F=A G*G=B G*H=C G*I=D G*J=E G*K=F
H*O=H H*A=I H*B=J H*C=K H*D=O H*E=A H*F=B H*G=C H*H=D H*I=E H*J=F H*K=G
I*O=I I*A=J I*B=K I*C=O I*D=A I*E=B I*F=C I*G=D I*H=E I*I=F I*J=G I*K=H
J*O=J J*A=K J*B=O J*C=A J*D=B J*E=C J*F=D J*G=E J*H=F J*I=G J*J=H J*K=I
K*O=K K*A=O K*B=A K*C=B K*D=C K*E=D K*F=E K*G=F K*H=G K*I=H K*J=I K*K=J
----C_12除法运算表----
O/O=O O/A=K O/B=J O/C=I O/D=H O/E=G O/F=F O/G=E O/H=D O/I=C O/J=B O/K=A
A/O=A A/A=O A/B=K A/C=J A/D=I A/E=H A/F=G A/G=F A/H=E A/I=D A/J=C A/K=B
B/O=B B/A=A B/B=O B/C=K B/D=J B/E=I B/F=H B/G=G B/H=F B/I=E B/J=D B/K=C
C/O=C C/A=B C/B=A C/C=O C/D=K C/E=J C/F=I C/G=H C/H=G C/I=F C/J=E C/K=D
D/O=D D/A=C D/B=B D/C=A D/D=O D/E=K D/F=J D/G=I D/H=H D/I=G D/J=F D/K=E
E/O=E E/A=D E/B=C E/C=B E/D=A E/E=O E/F=K E/G=J E/H=I E/I=H E/J=G E/K=F
F/O=F F/A=E F/B=D F/C=C F/D=B F/E=A F/F=O F/G=K F/H=J F/I=I F/J=H F/K=G
G/O=G G/A=F G/B=E G/C=D G/D=C G/E=B G/F=A G/G=O G/H=K G/I=J G/J=I G/K=H
H/O=H H/A=G H/B=F H/C=E H/D=D H/E=C H/F=B H/G=A H/H=O H/I=K H/J=J H/K=I
I/O=I I/A=H I/B=G I/C=F I/D=E I/E=D I/F=C I/G=B I/H=A I/I=O I/J=K I/K=J
J/O=J J/A=I J/B=H J/C=G J/D=F J/E=E J/F=D J/G=C J/H=B J/I=A J/J=O J/K=K
K/O=K K/A=J K/B=I K/C=H K/D=G K/E=F K/F=E K/G=D K/H=C K/I=B K/J=A K/K=O
1求证:四次方程x^4+p*x^2+q=0的伽罗瓦群为8阶群D_4,它是24阶群S_4的子群, 8个群元为:
E=(1),E1=(12),E2=(34),E3=(12)(34),E4=(13)(24),E5=(1423),E6=(1324),E7=(14)(23),
或写为:id=(1),f_d=(12),f_c=(34),r_2=(12)(34),f_v=(13)(24),r_1=(1423),r_3=(1324),f_h=(14)(23)。
2求证:D_3×C_2=D_6。
证明:D_3=<{I,r,rr,f,fr,frr},*>,C_2=<{0,1},+>,则D_3×C_2=<{(I,0),(r,0),(rr,0),(f,0),(fr,0),(frr,0),(I,1),(r,1),(rr,1),(f,1),(fr,1),(frr,1)},×>。
12阶群D_3×C_2的乘法表为:(x1,y1)×(x2,y2)=(x1*x2,y1+y2),显然幺元是(I,0)=O
(I,1)^2=(I,0)=>ord((I,1))=2
(frr,1)^2=(I,0)=>ord((frr,1))=2
(fr,1)^2=(I,0)=>ord((fr,1))=2
(f,1)^2=(I,0)=>ord((f,1))=2
(rr,1)^6=(I,0)=>ord((rr,1))=6
(r,1)^6=(I,0)=>ord((r,1))=6
(r,0)^3=(I,0)=>ord((r,0))=3
(rr,0)^3=(I,0)=>ord((rr,0))=3
(f,0)^2=(I,0)=>ord((f,0))=2
(fr,0)^2=(I,0)=>ord((fr,0))=2
(frr,0)^2=(I,0)=>ord((frr,0))=2
----12阶群D_6=D_3×C_2群元的阶----
6阶元D,E为(r,1),(rr,1),互为逆元
3阶元A,B为(r,0),(rr,0),互为逆元
令D=(r,1),A=(r,0),得DA=(rr,1)=E=AD,B=(rr,0)
7个2阶元:C,F,G,H,I,J,K,它们的逆元为自身,
分别是C=DB=BD=AE=EA=(I,1),
再令F=(f,1),得G=FA=(fr,1),H=AF=(rf,1)=(frr,1),I=CF=(f,0),J=CG=(fr,0),K=BJ=(rrfr,0)=(frr,0)
G12ElementToOrder(O=(I,0))=1
G12ElementToOrder(A=(r,0))=3
G12ElementToOrder(B=(rr,0))=3
G12ElementToOrder(C=(I,1))=2
G12ElementToOrder(D=(r,1))=6
G12ElementToOrder(E=(rr,1))=6
G12ElementToOrder(F=(f,1))=2
G12ElementToOrder(G=(fr,1))=2
G12ElementToOrder(H=(frr,1))=2
G12ElementToOrder(I=(f,0))=2
G12ElementToOrder(J=(fr,0))=2
G12ElementToOrder(K=(frr,0))=2
O^-1=O A^-1=B B^-1=A C^-1=C D^-1=E E^-1=D F^-1=F G^-1=G H^-1=H I^-1=I J^-1=J K^-1=K
----GAP4[ 12, 4 ]=D_6=D_3×C_2乘法运算表----
O*O=O O*A=A O*B=B O*C=C O*D=D O*E=E O*F=F O*G=G O*H=H O*I=I O*J=J O*K=K
A*O=A A*A=B A*B=O A*C=D A*D=E A*E=C A*F=H A*G=F A*H=G A*I=K A*J=I A*K=J
B*O=B B*A=O B*B=A B*C=E B*D=C B*E=D B*F=G B*G=H B*H=F B*I=J B*J=K B*K=I
C*O=C C*A=D C*B=E C*C=O C*D=A C*E=B C*F=I C*G=J C*H=K C*I=F C*J=G C*K=H
D*O=D D*A=E D*B=C D*C=A D*D=B D*E=O D*F=K D*G=I D*H=J D*I=H D*J=F D*K=G
E*O=E E*A=C E*B=D E*C=B E*D=O E*E=A E*F=J E*G=K E*H=I E*I=G E*J=H E*K=F
F*O=F F*A=G F*B=H F*C=I F*D=J F*E=K F*F=O F*G=A F*H=B F*I=C F*J=D F*K=E
G*O=G G*A=H G*B=F G*C=J G*D=K G*E=I G*F=B G*G=O G*H=A G*I=E G*J=C G*K=D
H*O=H H*A=F H*B=G H*C=K H*D=I H*E=J H*F=A H*G=B H*H=O H*I=D H*J=E H*K=C
I*O=I I*A=J I*B=K I*C=F I*D=G I*E=H I*F=C I*G=D I*H=E I*I=O I*J=A I*K=B
J*O=J J*A=K J*B=I J*C=G J*D=H J*E=F J*F=E J*G=C J*H=D J*I=B J*J=O J*K=A
K*O=K K*A=I K*B=J K*C=H K*D=F K*E=G K*F=D K*G=E K*H=C K*I=A K*J=B K*K=O


定理:C_m×C_n是循环群C_m×n的充要条件是(m,n)=1。----群论与初等数论的联系
12阶群有5个:GAP4[ 12, 5 ]=Z_2+Z_2+Z_3=K_4+Z_3=C_3×K_4=C_2×C_6=C_2×C_2×C_3,GAP4[ 12, 2 ]=Z_12=Z_4+Z_3,GAP4[ 12, 4 ]=D_6=D_3×C_2=D_12,GAP4[ 12, 3 ]=A_4,GAP4[ 12, 1 ]=T=Q_12
gap> G:=QuaternionGroup(12);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,12];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 12 with 3 generators>
[ 12, 1 ]
[ 1, 4, 6, 2, 4, 4, 3, 3, 4, 4, 6, 4 ]
[ 1, 2, 3, 4, 6, 12 ]
1,1,2,6,2,0,
gap> G:=CyclicGroup(12);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,12];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 12 with 3 generators>
[ 12, 2 ]
[ 1, 12, 6, 3, 4, 12, 2, 3, 12, 4, 6, 12 ]
[ 1, 2, 3, 4, 6, 12 ]
1,1,2,2,2,4,
gap> G:=AlternatingGroup(4);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,12];for i in M do Print(Size(Positions(L,i)),","); od;
Alt( [ 1 .. 4 ] )
[ 12, 3 ]
[ 1, 3, 3, 2, 3, 3, 3, 3, 2, 3, 3, 2 ]
[ 1, 2, 3, 4, 6, 12 ]
1,3,8,0,0,0,
gap> G:=DihedralGroup(12);IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,12];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 12 with 3 generators>
[ 12, 4 ]
[ 1, 2, 6, 3, 2, 2, 2, 3, 2, 2, 6, 2 ]
[ 1, 2, 3, 4, 6, 12 ]
1,7,2,0,2,0,
gap> G:=DirectProduct(CyclicGroup(6),CyclicGroup(2));IdGroup(G);L:=List(Elements(G),Order);M:=[1,2,3,4,6,12];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 12 with 3 generators>
[ 12, 5 ]
[ 1, 6, 3, 2, 2, 6, 3, 6, 6, 2, 6, 6 ]
[ 1, 2, 3, 4, 6, 12 ]
1,3,2,0,6,0,
四元数群或双循环群(Dicyclic group):Q_(4n)=<a,b|a^(2n)=1,a^n=b^2,b^(-1)ab=a^(-1)>
二面体群(Dihedral group):D_(2n)=<a,b|a^n=b^2=1,b^(-1)ab=a^(-1)>
Q_8=<a,b|a^4=1,a^2=b^2,b^(-1)ab=a^(-1)>
令a=i,b=j
1阶元素:1
4阶元素:a=i,b=j,a^3=-i,a^2b=b^3=-j,ab=k,a^3b=-k
2阶元素:a^2=b^2=-1
-jij=-i=-jk
所以,群Q_8:
元素,1,a,a^2,a^3,b,ab,a^2b,a^3b
阶数,1,4,2,4,4,4,4,4
定义:设H和K是群G的正规子群,如果群G满足条件G=HK,且H∩K={e},则称G是H和K的内直积(internal direct product)。
S_3是S_4的子群,K_4是S_4的正规子群,S_3∩K_4={e}。
S_3不是S_4的正规子群,S_4不是S_3和K的内直积。
定理:群A和群B的外直积A×B是有限群的充要条件是A和B都是有限群,并且,当A×B是有限群时,有|A×B|=|A||B|。A×B是交换群的充要条件是A和B都是交换群。A×B=B×A。
C_4×C_6×C_5=C_4×C_30
定义:如果一个群C能够分解成它的真子群的直积A×B,则称这个群C为可分解群;否则称为不可分解群。
S_n是不可分解群。
n≠4时,S_n的非平凡正规子群只有A_n。
S_4的非平凡正规子群只有A_4和K_4,而且K_4?A_4。
gap> G:=SymmetricGroup(4);L:=DerivedSeriesOfGroup(G);IsGroup(L[2]);IsSubgroup(G,L[2]);IsNormal(G,L[2]);G/L[2];IdGroup(G/L[2]);
Sym( [ 1 .. 4 ] )
[ Sym( [ 1 .. 4 ] ), Alt( [ 1 .. 4 ] ), Group([ (1,4)(2,3), (1,2)(3,4) ]), Group(()) ]
true
true
true
Group([ f1 ])
[ 2, 1 ]
gap> G:=SymmetricGroup(4);L:=DerivedSeriesOfGroup(G);IsGroup(L[2]);IsSubgroup(G,L[3]);IsNormal(G,L[3]);G/L[3];IdGroup(G/L[3]);
Sym( [ 1 .. 4 ] )
[ Sym( [ 1 .. 4 ] ), Alt( [ 1 .. 4 ] ), Group([ (1,4)(2,3), (1,2)(3,4) ]), Group(()) ]
true
true
true
Group([ f1, f2 ])
[ 6, 1 ]
gap> G:=SymmetricGroup(4);L:=DerivedSeriesOfGroup(G);IsGroup(L[2]);IsSubgroup(L[2],L[3]);IsNormal(L[2],L[3]);L[2]/L[3];IdGroup(L[2]/L[3]);
Sym( [ 1 .. 4 ] )
[ Sym( [ 1 .. 4 ] ), Alt( [ 1 .. 4 ] ), Group([ (1,4)(2,3), (1,2)(3,4) ]), Group(()) ]
true
true
true
Group([ f1 ])
[ 3, 1 ]
12阶群D_12同构于12阶群D_6×C_2。
找出D_12的正规子群N和M,N=D_6,M=C_2,N∩M={e},D_12=NM。
 
Q_+是不可分解群。
Z_+是不可分解群。
C_n是不可分解群当且仅当n为素数的方幂。
证明或否定Z×Z是循环群。

C_+=R_+×R_+
U(8) ={[1]_8,[3]_8,[5]_8,[7]_8}=K_4≠C_4,
U(15)=U(3)×U(5)=C_2×C_4,
给定阶的有限群同构分类问题的研究http://www.docin.com/p-154974185.html
用同阶元个数研究有限群http://www.doc88.com/p-003808253747.html
关于低阶群(G1-G20)嵌入置换群的一些讨论http://www.docin.com/p-88717499.html
低阶群的特征标表http://www.doc88.com/p-536463154451.html
加内特(Garrett)的密码学导引http://book.chaoxing.com/ebook/read_11117825.html
In mathematics, in the field of group theory, a T-group is a group in which the property of normality is transitive, that is, every subnormal subgroup is normal. Here are some facts about T-groups:
Every simple group is a T-group.
Every abelian group is a T-group.
Every Hamiltonian group is a T-group.
Every nilpotent T-group is either abelian or Hamiltonian, because in a nilpotent group, every subgroup is subnormal.
Every solvable T-group is metabelian.
Every normal subgroup of a T-group is a T-group.
Every homomorphic image of a T-group is a T-group.
In group theory, a Dedekind group is a group G such that every subgroup of G is normal. All abelian groups are Dedekind groups. A non-abelian Dedekind group is called a Hamiltonian group.
Dedekind groups are named after Richard Dedekind, who investigated them in (Dedekind 1897), proving a form of the above structure theorem (for finite groups). He named the non-abelian ones after William Rowan Hamilton, the discoverer of quaternions.
F_3-向量空间V是F_3-模
二维有限域向量空間Z_3×Z_3/Z_3包含9个点(9个向量模元素,3个純量環元素): 
(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)
GL(3,2)是(8-1)(8-2)(8-4)=168阶群
GL(2,7)是一个(49-1)(49-7)=2016阶群,
SL(2,7)是GL(2,7)的正规子群,是一个2016/6=336阶群,
GL(2,7)/SL(2,7)=(F_7)^×=C_6。
PSL(2,7)=SL(2,7)/{I,-I}是一个168阶群,同构于168阶群GL(3,2)。


置换9个点,是362880阶群S_9的子群?
n个文字的所有偶置换构成的交错群,当n≥5时是非交换单群。
20160阶群GL(4,2)同构于20160阶群Alt(8)=A_8吗?
6阶群PSL(2,2)同构于6阶群S_3,12阶群PSL(2,3)同构于12阶群A_4,
20130321问题:在群论中,若|A|=|C|,A/B=C/D,B=D,则可能有A≠C。
GL(2,2)是(4-1)(4-2)=6阶群,GL(2,2)/SL(2,2)=(F_2)^×=C_1,
GAP4[ 48, 29 ]=GL(2,3)是(9-1)(9-3)=48阶群,GL(2,3)/SL(2,3)=(F_3)^×=C_2,SL(2,3)是24阶群,PSL(2,3)是12阶群,在若尔当1870年的名著中,q元有限域F_q上的投影特殊线性群PSL(n,q)被构造出来了。
Lie型单群和Lie型群
Lie型群GAP4[ 48, 7 ]=O(2,F_23)是一个48阶群,它包含{{11,15},{15,12}}。
Lie型群是复数域上单Lie群在有限域上的相似物,不全是单群它包括有限域上某些典型群、例外群和扭群。前两者也称为谢瓦莱群。
1.计算小阶群的中心
群G中与每个元素都可交换的元素,称为中心元素。G的全体中心元素形成G的正规子群,称为G的中心,常以Z(G)表示。
与射影几何有关的,就要研究射影群。典型群乃至一般群关于中心子群所得的商群,就是相应的射影群。
例如Z(GL_n(C))={aI_n|a≠0是复数}=C^*I,一般射影线性群PGL_n(C)=GL_n(C)/C^*I。
类似地,有PSL_n(C)、PSL_n(R)等。 华罗庚、万哲先著有《典型群》一书。
典型群是系数在实数域或复数域或有限域或其他域(p进域、……)中满足某些条件的矩阵所成的群。
Lie型群:
GL_n(F_p)
SL_n(F_p)
sp_n(F_p)
O_n(F_p)
这些都是有限群,称为有限典型群,其中很多是单群。
20世纪初,狄克逊根据G_2型Lie群的形象,做出G_2型的有限单群。
1955年,域上的谢瓦莱群都是单群;有限域上的谢瓦莱群都是有限单群。
代数群与Lie群有许多相似的地方,有一个本质的差别是:Lie群考虑的基域是实数域R与复数域C,而代数群的基域是任意的代数闭域K,它可以特征数不是零,因而代数群上没有自然的拓扑(可以用代数性质给出不是豪斯多夫的查理斯基拓扑)。
在1854年的那篇论文中,凯莱列出了所有阶(秩)小于等于6的群:
C_1,C_2,C_3,C_4,C_2+C_2,C_5,C_6,S_3。


20140620-20140626补充:
20140625证明了16阶拟二面体群GAP4[16,8]=G16_10=QD_16同构于GL(2,3)的一个16阶子群。
选取8阶元a={{0,1},{1,1}},2阶元x={{1,0},{1,2}}∈SL_2(F_3),则G16_10=QD_16=<a,x|a^8=x^2=e,xax^(-1)=a^3>。
G16_10=QD_16有1个1阶元(e=1,0,0,1),5个2阶元(x=1,0,1,2,a^4=2,0,0,2,a2x=2,2,0,1,a4x=2,0,2,1a6x=1,1,0,2),6个4阶元(a^2=1,1,1,2,a^6=2,2,2,1,ax=1,2,2,2,a3x=0,1,2,0,a5x=2,1,1,1,a7x=0,2,1,0),4个8阶元(a=0,1,1,1,a^3=1,2,2,0,a^5=0,2,2,2,a^7=2,1,1,0),0个16阶元
gap> G:=SmallGroup(16,8);IdGroup(G);RankPGroup(G);L:=List(Elements(G),Order);M:=[1,2,4,8,16];for i in M do Print(Size(Positions(L,i)),","); od;
<pc group of size 16 with 4 generators>
[ 16, 8 ]
2
[ 1, 4, 2, 4, 2, 8, 4, 4, 2, 2, 4, 8, 8, 4, 2, 8 ]
[ 1, 2, 4, 8, 16 ]
1,5,6,4,0,
请输入群A凯莱表文件名:GL(2,3).txt
G48ElementToOrder(0)=1
G48ElementToOrder(1)=2
G48ElementToOrder(2)=8
G48ElementToOrder(3)=8
G48ElementToOrder(4)=4
G48ElementToOrder(5)=6
G48ElementToOrder(6)=3
G48ElementToOrder(7)=4
G48ElementToOrder(8)=6
G48ElementToOrder(9)=3
G48ElementToOrder(10)=2
G48ElementToOrder(11)=8
G48ElementToOrder(12)=8
G48ElementToOrder(13)=2
G48ElementToOrder(14)=3
G48ElementToOrder(15)=2
G48ElementToOrder(16)=3
G48ElementToOrder(17)=2
G48ElementToOrder(18)=3
G48ElementToOrder(19)=2
G48ElementToOrder(20)=8
G48ElementToOrder(21)=4
G48ElementToOrder(22)=6
G48ElementToOrder(23)=8
G48ElementToOrder(24)=3
G48ElementToOrder(25)=2
G48ElementToOrder(26)=6
G48ElementToOrder(27)=8
G48ElementToOrder(28)=8
G48ElementToOrder(29)=4
G48ElementToOrder(30)=2
G48ElementToOrder(31)=2
G48ElementToOrder(32)=2
G48ElementToOrder(33)=6
G48ElementToOrder(34)=2
G48ElementToOrder(35)=6
G48ElementToOrder(36)=2
G48ElementToOrder(37)=6
G48ElementToOrder(38)=8
G48ElementToOrder(39)=4
G48ElementToOrder(40)=3
G48ElementToOrder(41)=8
G48ElementToOrder(42)=2
G48ElementToOrder(43)=6
G48ElementToOrder(44)=3
G48ElementToOrder(45)=8
G48ElementToOrder(46)=8
G48ElementToOrder(47)=4
GAP4[ 48, 29 ]=GL(2,3)有1个1阶元,13个2阶元,8个3阶元,6个4阶元,8个6阶元,12个8阶元,0个12阶元,0个16阶元,0个24阶元,0个48阶元


gap> IdGroup(SL(2,7));
[ 336, 114 ]
gap> IdGroup(Center(SL(2,7)));
[ 2, 1 ]
gap> IdGroup(PSL(2,7));
[ 168, 42 ]
gap> IdGroup(GL(3,2));
[ 168, 42 ]
SL(2,7)有1个1阶元,1个2阶元,56个3阶元,42个4阶元,56个6阶元,48个7阶元,84个8阶元,0个12阶元,48个14阶元,0个16阶元,0个21阶元,0个24阶元,0个28阶元,0个42阶元,0个48阶元,0个56阶元,0个84阶元,0个112阶元,0个168阶元,0个336阶元
SL(2,7)的中心是C_2,换位子群是336阶群,射影中心是168阶群,射影换位子群是C_1
GL(2,7)是一个(49-1)(49-7)=2016阶群,
SL(2,7)是GL(2,7)的正规子群,是一个2016/6=336阶群,
GL(2,7)/SL(2,7)=(F_7)^×=C_6。
PSL(2,7)=SL(2,7)/{I,-I}是一个168阶群,同构于168阶群GL(3,2)。



D(SL(2,3))=Q_8有1个1阶元,1个2阶元,6个4阶元,0个8阶元
Z(SL(2,3))=C_2
PD(SL(2,3))=C_3
PZ(SL(2,3))=PSL(2,3)=A_4有1个1阶元,3个2阶元,8个3阶元,0个4阶元,0个6阶元,0个12阶元


48个可逆的F_3上的2阶方阵构成一般线性群GL(2,3)。----SL(2,3)是24阶群,GL(2,3)是48阶群
GL(3,2)是(8-1)(8-2)(8-4)=168阶群
GAP4[ 48, 29 ]=GL(2,3)是(9-1)(9-3)=48阶群


置换9个点,是362880阶群S_9的子群?
n个文字的所有偶置换构成的交错群,当n≥5时是非交换单群。
20160阶群GL(4,2)同构于20160阶群Alt(8)=A_8吗?
6阶群PSL(2,2)同构于6阶群S_3,,
20130321问题:在群论中,若|A|=|C|,A/B=C/D,B=D,则可能有A≠C。
GL(2,2)是(4-1)(4-2)=6阶群,GL(2,2)/SL(2,2)=(F_2)^×=C_1,
GAP4[ 48, 29 ]=GL(2,3)是(9-1)(9-3)=48阶群,GL(2,3)/SL(2,3)=(F_3)^×=C_2,SL(2,3)是24阶群,PSL(2,3)是12阶群,在若尔当1870年的名著中,q元有限域F_q上的投影特殊线性群PSL(n,q)被构造出来了。
Lie型单群和Lie型群
Lie型群GAP4[ 48, 7 ]=O(2,F_23)是一个48阶群,它包含{{11,15},{15,12}}。
Lie型群是复数域上单Lie群在有限域上的相似物,不全是单群它包括有限域上某些典型群、例外群和扭群。前两者也称为谢瓦莱群。


20140628:有限生成群、群的扩张类似于域的扩张,是一种代数结构的构造方法。
http://en.wikipedia.org/wiki/Binary_tetrahedral_group
双四面体群(binary tetrahedral group)2T=SL(2,3)=赫维茨环的单位群
双八面体群(binary octahedral group)2O
双二十面体群(binary icosahedral group)2I
----24阶非交换群SL_2(F_3)=2T=Q_8:C_3=<(2,3,1,6,4,5,7,8),(1,5,8,4,7,3,2,6)>群元的阶----
//1个1阶元,1个2阶元,8个3阶元,6个4阶元,8个6阶元,0个8阶元,0个12阶元,0个24阶元
G24ElementToOrder(0)=1
G24ElementToOrder(1)=2
G24ElementToOrder(2)=4
G24ElementToOrder(3)=4
G24ElementToOrder(4)=4
G24ElementToOrder(5)=4
G24ElementToOrder(6)=4
G24ElementToOrder(7)=4
G24ElementToOrder(8)=6
G24ElementToOrder(9)=3
G24ElementToOrder(10)=6
G24ElementToOrder(11)=3
G24ElementToOrder(12)=6
G24ElementToOrder(13)=3
G24ElementToOrder(14)=6
G24ElementToOrder(15)=3
G24ElementToOrder(16)=6
G24ElementToOrder(17)=3
G24ElementToOrder(18)=6
G24ElementToOrder(19)=3
G24ElementToOrder(20)=6
G24ElementToOrder(21)=3
G24ElementToOrder(22)=6
G24ElementToOrder(23)=3
float g_2T[24][4]=
{
0,0,0,1,//1
0,0,0,-1,//-1
1,0,0,0,//i
-1,0,0,0,//-i
0,1,0,0,//j
0,-1,0,0,//-j
0,0,1,0,//k
0,0,-1,0,//-k
0.5,0.5,0.5,0.5,//q9
0.5,0.5,0.5,-0.5,//q10
-0.5,0.5,0.5,0.5,//q11
-0.5,0.5,0.5,-0.5,//q12
0.5,-0.5,0.5,0.5,//q13
0.5,-0.5,0.5,-0.5,//q14
-0.5,-0.5,0.5,0.5,//q15
-0.5,-0.5,0.5,-0.5,//q16
0.5,0.5,-0.5,0.5,//q17
0.5,0.5,-0.5,-0.5,//q18
-0.5,0.5,-0.5,0.5,//q19
-0.5,0.5,-0.5,-0.5,//q20
0.5,-0.5,-0.5,0.5,//q21
0.5,-0.5,-0.5,-0.5,//q22
-0.5,-0.5,-0.5,0.5,//q23
-0.5,-0.5,-0.5,-0.5,//q24
};
float g_2O[48][4]=
{
0,0,0,1,//1
0,0,0,-1,//-1
1,0,0,0,//i
-1,0,0,0,//-i
0,1,0,0,//j
0,-1,0,0,//-j
0,0,1,0,//k
0,0,-1,0,//-k
0.5,0.5,0.5,0.5,//q9
0.5,0.5,0.5,-0.5,//q10
-0.5,0.5,0.5,0.5,//q11
-0.5,0.5,0.5,-0.5,//q12
0.5,-0.5,0.5,0.5,//q13
0.5,-0.5,0.5,-0.5,//q14
-0.5,-0.5,0.5,0.5,//q15
-0.5,-0.5,0.5,-0.5,//q16
0.5,0.5,-0.5,0.5,//q17
0.5,0.5,-0.5,-0.5,//q18
-0.5,0.5,-0.5,0.5,//q19
-0.5,0.5,-0.5,-0.5,//q20
0.5,-0.5,-0.5,0.5,//q21
0.5,-0.5,-0.5,-0.5,//q22
-0.5,-0.5,-0.5,0.5,//q23
-0.5,-0.5,-0.5,-0.5,//q24
r2,0,0,r2,//(1+i)/sqrt(2)
-r2,0,0,-r2,//(-1-i)/sqrt(2)
-r2,0,0,r2,//(1-i)/sqrt(2)
r2,0,0,-r2,//(-1+i)/sqrt(2)
//28=4*24
//29=4*25
//30=4*26
//31=4*27
//32=8*24
//33=8*25
//34=8*26
//35=8*27
//36=9*24
//37=9*25
//38=9*26
//39=9*27
//40=10*24
//41=10*25
//42=10*26
//43=10*27
//44=11*24
//45=11*25
//46=11*26
//47=11*27
0.000000,0.707107,0.707107,0.000000,
0.000000,-0.707107,-0.707107,0.000000,
0.000000,0.707107,-0.707107,0.000000,
0.000000,-0.707107,0.707107,-0.000000,
0.707107,0.000000,0.707107,0.000000,
-0.707107,0.000000,-0.707107,0.000000,
0.000000,0.707107,0.000000,0.707107,
0.000000,-0.707107,0.000000,-0.707107,
0.000000,0.000000,0.707107,-0.707107,
0.000000,0.000000,-0.707107,0.707107,
0.707107,0.707107,0.000000,0.000000,
-0.707107,-0.707107,0.000000,0.000000,
0.000000,0.000000,0.707107,0.707107,
0.000000,0.000000,-0.707107,-0.707107,
-0.707107,0.707107,0.000000,0.000000,
0.707107,-0.707107,0.000000,0.000000,
-0.707107,0.000000,0.707107,0.000000,
0.707107,0.000000,-0.707107,0.000000,
0.000000,0.707107,0.000000,-0.707107,
0.000000,-0.707107,0.000000,0.707107,
};
G48ElementToOrder(24)=8
G48ElementToOrder(25)=8
G48ElementToOrder(26)=8
G48ElementToOrder(27)=8
G48ElementToOrder(28)=4
G48ElementToOrder(29)=4
G48ElementToOrder(30)=4
G48ElementToOrder(31)=4
G48ElementToOrder(32)=4
G48ElementToOrder(33)=4
G48ElementToOrder(34)=8
G48ElementToOrder(35)=8
G48ElementToOrder(36)=8
G48ElementToOrder(37)=8
G48ElementToOrder(38)=4
G48ElementToOrder(39)=4
G48ElementToOrder(40)=8
G48ElementToOrder(41)=8
G48ElementToOrder(42)=4
G48ElementToOrder(43)=4
G48ElementToOrder(44)=4
G48ElementToOrder(45)=4
G48ElementToOrder(46)=8
G48ElementToOrder(47)=8
2O有1个1阶元,1个2阶元,8个3阶元,18个4阶元,8个6阶元,12个8阶元,0个12阶元,0个16阶元,0个24阶元,0个48阶元
 


 
|GL_3(F_2)|=168
|SL_3(F_2)|=168
|O_3(F_2)|=6
|SU_3(F_2)|=72
|PSU_3(F_2)|=72
gap> MathieuGroup(9);
Group([ (1,4,9,8)(2,5,3,6), (1,6,5,2)(3,7,9,8) ])
gap> IdGroup(MathieuGroup(9));
[ 72, 41 ]
gap> IdGroup(PSU(3,2));
[ 72, 41 ]
gap> IdGroup(SU(3,2));
[ 216, 88 ]
gap> IdGroup(SU(2,3));
[ 24, 3 ]
gap> IdGroup(PSU(2,3));
[ 12, 3 ]
问题:证明M9有一个18阶子群同构于G18_5=(C_3×C_3):C_2(9阶初等Abel群对应的18阶广义二面体群)。
9次马蒂厄群的置换表示
int g_M9[72][9]=
{
{1,2,3,4,5,6,7,8,9},
{4,5,6,9,3,2,7,1,8},//4阶元a
{6,1,7,4,2,5,9,3,8},//4阶元b
{9,3,2,8,6,5,7,4,1},//2阶元a^2
{8,6,5,1,2,3,7,9,4},//4阶元a^3
{5,6,9,4,1,2,8,7,3},//2阶元b^2
{2,5,8,4,6,1,3,9,7},//4阶元b^3
{4,2,5,8,7,1,9,6,3},//4阶元ab
{4,1,2,3,9,6,8,5,7},//4阶元abb
{4,6,1,7,8,5,3,2,9},//4阶元abbb
{8,7,1,3,5,2,9,4,6},//4阶元aab
{3,9,6,7,2,1,8,4,5},//3阶元aabb
{7,8,5,9,1,6,3,4,2},//4阶元aabbb
{3,5,2,6,1,7,9,8,4},//4阶元aaab
{7,2,1,5,6,9,8,3,4},//4阶元aaabb
{9,1,6,2,5,8,3,7,4},//4阶元aaabbb
{2,4,7,9,5,3,8,6,1},//4阶元ba=aaabbbaaabbbaaabbb
{5,9,7,8,3,6,1,2,4},//4阶元baa=aabbbaabbbaabbb
{3,8,7,1,6,2,4,5,9},//4阶元baaa=abbbabbbabbb
{3,2,8,9,4,5,1,7,6},//4阶元bba=aaabbaaabbaaabb
{6,5,1,8,9,3,4,7,2},//3阶元bbaa=aabbaabb
{2,3,4,1,8,6,9,7,5},//4阶元bbaaa=abbabbabb
{5,3,1,9,2,4,6,8,7},//4阶元bbba=aaabaaabaaab
{3,6,4,8,5,9,2,1,7},//4阶元bbbaa=aabaabaab
{6,2,9,1,3,8,5,4,7},//4阶元bbbaaa=ababab
{8,2,7,6,9,4,3,1,5},//2阶元abab=aaabbaaabb
{3,4,1,2,7,6,5,9,8},//2阶元abbabb=aabbbaabbb
{7,5,4,3,2,8,1,6,9},//2阶元abbbabbb
{4,9,8,1,5,7,6,3,2},//2阶元aabaab=aaabbbaaabbb
{2,1,5,7,3,9,4,8,6},//2阶元aaabaaab
{9,5,3,1,7,4,8,2,6},//30=1*16
{8,3,6,4,7,9,1,5,2},//31=1*17
{1,6,2,9,7,8,4,3,5},//32=1*18
{9,4,5,6,8,2,1,3,7},//33=1*19
{8,9,3,2,1,5,4,6,7},//34=1*20
{1,8,6,5,4,3,9,2,7},//35=1*21
{9,2,4,7,1,3,6,5,8},//36=1*22
{8,5,9,7,4,6,2,3,1},//37=1*23
{1,3,8,7,9,2,5,6,4},//38=1*24
{6,9,4,5,7,2,3,8,1},//39=1*25
{2,7,6,8,1,4,5,3,9},//40=1*26
{1,5,7,2,8,9,6,4,3},//41=1*28
{7,3,9,6,5,1,4,2,8},//42=1*29
{1,4,9,8,2,7,3,5,6},//43=2*7
{6,4,8,3,1,9,7,2,5},//44=2*8
{5,4,3,7,6,8,9,1,2},//45=2*9
{2,8,9,3,7,5,6,1,4},//46=2*10
{6,7,3,9,8,1,2,5,4},//47=2*12
{9,7,8,5,2,6,4,1,3},//48=2*14
{4,8,3,6,2,9,5,7,1},//49=2*25
{6,3,5,2,4,7,8,1,9},//50=2*26
{7,4,6,1,9,5,2,8,3},//51=2*28
{1,7,4,6,3,5,8,9,2},//52=3*16
{4,7,9,2,6,3,1,8,5},//53=3*17
{6,8,2,7,5,4,1,9,3},//54=3*19
{7,1,3,8,4,2,6,9,5},//55=3*22
{7,9,2,4,8,3,5,1,6},//56=3*24
{5,7,2,1,4,9,3,6,8},//57=3*25
{8,1,4,9,6,7,5,2,3},//58=3*26
{2,6,3,5,9,7,1,4,8},//59=4*17
{5,2,6,3,8,7,4,9,1},//60=4*18
{7,6,8,2,3,4,9,5,1},//61=4*21
{8,4,2,5,3,1,6,7,9},//62=4*22
{1,9,5,3,6,4,2,7,8},//63=4*23
{9,6,7,3,4,1,5,8,2},//64=4*26
{3,7,5,4,9,8,6,2,1},//65=4*28
{5,8,4,2,9,1,7,3,6},//66=5*15
{5,1,8,6,7,3,2,4,9},//67=6*13
{2,9,1,6,4,8,7,5,3},//68=6*25
{3,1,9,5,8,4,7,6,2},//69=7*8
{9,8,1,4,3,7,2,6,5},//70=7*12
{4,3,7,5,1,8,2,9,6},//71=10*12
};
G72ElementToOrder(0)=1
G72ElementToOrder(1)=4
G72ElementToOrder(2)=4
G72ElementToOrder(3)=2
G72ElementToOrder(4)=4
G72ElementToOrder(5)=2
G72ElementToOrder(6)=4
G72ElementToOrder(7)=4
G72ElementToOrder(8)=4
G72ElementToOrder(9)=4
G72ElementToOrder(10)=4
G72ElementToOrder(11)=3
G72ElementToOrder(12)=4
G72ElementToOrder(13)=4
G72ElementToOrder(14)=4
G72ElementToOrder(15)=4
G72ElementToOrder(16)=4
G72ElementToOrder(17)=4
G72ElementToOrder(18)=4
G72ElementToOrder(19)=4
G72ElementToOrder(20)=3
G72ElementToOrder(21)=4
G72ElementToOrder(22)=4
G72ElementToOrder(23)=4
G72ElementToOrder(24)=4
G72ElementToOrder(25)=2
G72ElementToOrder(26)=2
G72ElementToOrder(27)=2
G72ElementToOrder(28)=2
G72ElementToOrder(29)=2
G72ElementToOrder(30)=4
G72ElementToOrder(31)=4
G72ElementToOrder(32)=4
G72ElementToOrder(33)=3
G72ElementToOrder(34)=4
G72ElementToOrder(35)=2
G72ElementToOrder(36)=4
G72ElementToOrder(37)=4
G72ElementToOrder(38)=4
G72ElementToOrder(39)=4
G72ElementToOrder(40)=4
G72ElementToOrder(41)=4
G72ElementToOrder(42)=4
G72ElementToOrder(43)=4
G72ElementToOrder(44)=4
G72ElementToOrder(45)=4
G72ElementToOrder(46)=3
G72ElementToOrder(47)=2
G72ElementToOrder(48)=4
G72ElementToOrder(49)=4
G72ElementToOrder(50)=4
G72ElementToOrder(51)=4
G72ElementToOrder(52)=4
G72ElementToOrder(53)=4
G72ElementToOrder(54)=4
G72ElementToOrder(55)=4
G72ElementToOrder(56)=4
G72ElementToOrder(57)=3
G72ElementToOrder(58)=3
G72ElementToOrder(59)=4
G72ElementToOrder(60)=4
G72ElementToOrder(61)=3
G72ElementToOrder(62)=4
G72ElementToOrder(63)=4
G72ElementToOrder(64)=4
G72ElementToOrder(65)=4
G72ElementToOrder(66)=4
G72ElementToOrder(67)=4
G72ElementToOrder(68)=4
G72ElementToOrder(69)=4
G72ElementToOrder(70)=4
G72ElementToOrder(71)=3
M9有1个1阶元,9个2阶元,8个3阶元,54个4阶元,0个6阶元,0个8阶元,0个9阶元,0个12阶元,0个18阶元,0个24阶元,0个36阶元,0个72阶元






你可能感兴趣的:(5种8阶群、5种12阶群、15种24阶群、52种48阶群(2013-01-29 17:03、2013-03-23 21:36)(附GAP软件的使用))