# 组¶

## 置换群¶

sage: G = PermutationGroup(['(1,2,3)(4,5)'])
sage: G
Permutation Group with generators [(1,2,3)(4,5)]
sage: g = G.gens()[0]; g
(1,2,3)(4,5)
sage: g*g
(1,3,2)
sage: G = PermutationGroup(['(1,2,3)'])
sage: g = G.gens()[0]; g
(1,2,3)
sage: g.order()
3


sage: cube = "cubegp := Group(
( 1, 3, 8, 6)( 2, 5, 7, 4)( 9,33,25,17)(10,34,26,18)(11,35,27,19),
( 9,11,16,14)(10,13,15,12)( 1,17,41,40)( 4,20,44,37)( 6,22,46,35),
(17,19,24,22)(18,21,23,20)( 6,25,43,16)( 7,28,42,13)( 8,30,41,11),
(25,27,32,30)(26,29,31,28)( 3,38,43,19)( 5,36,45,21)( 8,33,48,24),
(33,35,40,38)(34,37,39,36)( 3, 9,46,32)( 2,12,47,29)( 1,14,48,27),
(41,43,48,46)(42,45,47,44)(14,22,30,38)(15,23,31,39)(16,24,32,40) )"
sage: gap(cube)
'permutation group with 6 generators'
sage: gap("Size(cubegp)")
43252003274489856000'


• 创建文件 cubegroup.py 包含以下行：

cube = "cubegp := Group(
( 1, 3, 8, 6)( 2, 5, 7, 4)( 9,33,25,17)(10,34,26,18)(11,35,27,19),
( 9,11,16,14)(10,13,15,12)( 1,17,41,40)( 4,20,44,37)( 6,22,46,35),
(17,19,24,22)(18,21,23,20)( 6,25,43,16)( 7,28,42,13)( 8,30,41,11),
(25,27,32,30)(26,29,31,28)( 3,38,43,19)( 5,36,45,21)( 8,33,48,24),
(33,35,40,38)(34,37,39,36)( 3, 9,46,32)( 2,12,47,29)( 1,14,48,27),
(41,43,48,46)(42,45,47,44)(14,22,30,38)(15,23,31,39)(16,24,32,40) )"


然后将文件放入子目录中 \$SAGE_ROOT/local/lib/python2.4/site-packages/sage 你的Sage主目录。最后，阅读（即。， import )它变成了Sage：

sage: import sage.cubegroup
sage: sage.cubegroup.cube
'cubegp := Group(( 1, 3, 8, 6)( 2, 5, 7, 4)( 9,33,25,17)(10,34,26,18)
(11,35,27,19),( 9,11,16,14)(10,13,15,12)( 1,17,41,40)( 4,20,44,37)
( 6,22,46,35),(17,19,24,22)(18,21,23,20)( 6,25,43,16)( 7,28,42,13)
( 8,30,41,11),(25,27,32,30)(26,29,31,28)( 3,38,43,19)( 5,36,45,21)
( 8,33,48,24),(33,35,40,38)(34,37,39,36)( 3, 9,46,32)( 2,12,47,29)
( 1,14,48,27),(41,43,48,46)(42,45,47,44)(14,22,30,38)(15,23,31,39)
(16,24,32,40) )'
sage: gap(sage.cubegroup.cube)
'permutation group with 6 generators'
sage: gap("Size(cubegp)")
'43252003274489856000'


（您将在Sage输出中使用行换行，而不是上面的回车。）

• 使用 CubeGroup 班级：

sage: rubik = CubeGroup()
sage: rubik
The Rubik's cube group with generators R,L,F,B,U,D in SymmetricGroup(48).
sage: rubik.order()
43252003274489856000


（1） 已经实现了经典组（如 $$GU(3,\GF{{5}})$$ )有限域上的矩阵群和用户定义的生成元。

（2） 也实现了有限和无限（但有限生成）交换群。

## 共轭类¶

sage: G = PermutationGroup(['(1,2,3)', '(1,2)(3,4)', '(1,7)'])
sage: CG = G.conjugacy_classes_representatives()
sage: gamma = CG[2]
sage: CG; gamma
[(), (4,7), (3,4,7), (2,3)(4,7), (2,3,4,7), (1,2)(3,4,7), (1,2,3,4,7)]
(3,4,7)


sage: gap.eval("G := Group((1,2)(3,4),(1,2,3))")
'Group([ (1,2)(3,4), (1,2,3) ])'
sage: gap.eval("CG := ConjugacyClasses(G)")
'[ ()^G, (2,3,4)^G, (2,4,3)^G, (1,2)(3,4)^G ]'
sage: gap.eval("gamma := CG[3]")
'(2,4,3)^G'
sage: gap.eval("g := Representative(gamma)")
'(2,4,3)'


sage: G = gap.Group('[(1,2,3), (1,2)(3,4), (1,7)]')
sage: CG = G.ConjugacyClasses()
sage: gamma = CG[2]
sage: g = gamma.Representative()
sage: CG; gamma; g
[ ConjugacyClass( SymmetricGroup( [ 1, 2, 3, 4, 7 ] ), () ),
ConjugacyClass( SymmetricGroup( [ 1, 2, 3, 4, 7 ] ), (4,7) ),
ConjugacyClass( SymmetricGroup( [ 1, 2, 3, 4, 7 ] ), (3,4,7) ),
ConjugacyClass( SymmetricGroup( [ 1, 2, 3, 4, 7 ] ), (2,3)(4,7) ),
ConjugacyClass( SymmetricGroup( [ 1, 2, 3, 4, 7 ] ), (2,3,4,7) ),
ConjugacyClass( SymmetricGroup( [ 1, 2, 3, 4, 7 ] ), (1,2)(3,4,7) ),
ConjugacyClass( SymmetricGroup( [ 1, 2, 3, 4, 7 ] ), (1,2,3,4,7) ) ]
ConjugacyClass( SymmetricGroup( [ 1, 2, 3, 4, 7 ] ), (4,7) )
(4,7)


## 正规子群¶

sage: G = AlternatingGroup( 5 )
sage: gap(G).NormalSubgroups()
[ AlternatingGroup( [ 1 .. 5 ] ), Group( () ) ]


sage: G = gap("AlternatingGroup( 5 )")
sage: G.NormalSubgroups()
[ AlternatingGroup( [ 1 .. 5 ] ), Group( () ) ]


sage: print(gap.eval("G := AlternatingGroup( 5 )"))
Alt( [ 1 .. 5 ] )
sage: print(gap.eval("normal := NormalSubgroups( G )"))
[ Alt( [ 1 .. 5 ] ), Group(()) ]
sage: G = gap.new("DihedralGroup( 10 )")
sage: G.NormalSubgroups()
[ Group( [ f1, f2 ] ), Group( [ f2 ] ), Group( <identity> of ... ) ]
sage: print(gap.eval("G := SymmetricGroup( 4 )"))
Sym( [ 1 .. 4 ] )
sage: print(gap.eval("normal := NormalSubgroups( G );"))
[ Sym( [ 1 .. 4 ] ), Alt( [ 1 .. 4 ] ), Group([ (1,4)(2,3), (1,2)(3,4) ]),
Group(()) ]


## 中心¶

sage: G = PermutationGroup(['(1,2,3)(4,5)', '(3,4)'])
sage: G.center()
Subgroup generated by [()] of (Permutation Group with generators [(3,4), (1,2,3)(4,5)])


sage: G = SL(2, GF(5) )
sage: G.center()
Subgroup with 1 generators (
[4 0]
[0 4]
) of Special Linear Group of degree 2 over Finite Field of size 5
sage: G = PSL(2, 5 )
sage: G.center()
Subgroup generated by [()] of (The projective special linear group of degree 2 over Finite Field of size 5)


center 在GAP中可以任意拼写，在Sage中则不是这样。

## 组id数据库¶

sage: G = PermutationGroup(['(1,2,3)(4,5)', '(3,4)'])
sage: G.order()
120
sage: G.group_id()
[120, 34]


sage: gap_console()
┌───────┐   GAP 4.10.0 of 01-Nov-2018
│  GAP  │   https://www.gap-system.org
└───────┘   Architecture: x86_64-pc-linux-gnu-default64
Packages:   GAPDoc 1.6.2, PrimGrp 3.3.2, SmallGrp 1.3, TransGrp 2.0.4
gap> G:=Group((4,6,5)(7,8,9),(1,7,2,4,6,9,5,3));
Group([ (4,6,5)(7,8,9), (1,7,2,4,6,9,5,3) ])
gap> StructureDescription(G);
"(C3 x C3) : GL(2,3)"


## 每组订单少于32份的施工指导书¶

• 戴维斯·舒伯特

G1G2Gn 是已在Sage中初始化的置换组。下面的命令可以用来获取它们的直接积（当然，这里省略号只是作为一种符号使用，实际上您必须在所需的乘积中显式地输入每个因子）。

sage: G = direct_product_permgroups([G1, G2, ..., Gn])


$（h_1，k_1）（h_2，k_2）=（h_1 h_2，k_1^{phi（h_2）}k_2）。$

sage: G = H.semidirect_product(K, phi)


sage: G = CyclicPermutationGroup(n)

sage: G = DihedralGroup(n)


1

sage: G = SymmetricGroup(1)


[1,1]

2

C_2

sage: G = SymmetricGroup(2)


[2,1]

3

C_3

sage: G = CyclicPermutationGroup(3)


[3,1]

4

C_4

[4,1]

4

C_2 times C_2

sage: G = KleinFourGroup()


[4,2]

5

C_5

[5,1]

6

C_6

[6,2]

6

S_3 （3个字母上的对称群）

sage: G = SymmetricGroup(3)


[6,1]

7

C_7

[7,1]

8

C_8

[8,1]

8

C_4 times C_2

[8,2]

8

C_2times C_2times C_2

[8,5]

8

D_4

sage: G = DihedralGroup(4)


[8,3]

8

sage: G = QuaternionGroup()


[8,4]

9

C_9

[9,1]

9

C_3 times C_3

[9,2]

10

C_{10}

[10,2]

10

D_5

[10,1]

11

C_{11}

[11,1]

12

C_{12}

[12,2]

12

C_6 times C_2

[12,5]

12

D_6

[12,4]

12

A_4 （4个字母交替分组）

sage: G = AlternatingGroup(4)


[12,3]

12

Q_6 （12阶双环群）

sage: G = DiCyclicGroup(3)


[12,1]

13

C_{13}

[13,1]

14

C_{14}

[14,2]

14

D_{7}

[14,1]

15

C_{15}

[15,1]

16

C_{16}

[16,1]

16

C_8 times C_2

[16,5]

16

C_4 times C_4

[16,2]

16

C_4times C_2times C_2

[16,10号]

16

{C_2}^4

[16、14日]

16

D_4 times C_2

[16、11日]

16

Q times C_2

[16、12日]

16

D_8

[16,7]

16

Q_{{8}} （16阶双环群）

sage: G = DiCyclicGroup(4)


[16,9]

16

sage: G = SemidihedralGroup(4)


[16,8]

16

sage: G = SplitMetacyclicGroup(2,4)


[16,6]

16

(C_4 times C_2) rtimes_{phi} C_2

sage: C2 = SymmetricGroup(2); C4 = CyclicPermutationGroup(4)
sage: A = direct_product_permgroups([C2,C4])
sage: alpha = PermutationGroupMorphism(A,A,[A.gens()[0],A.gens()[0]^2*A.gens()[1]])
sage: phi = [[(1,2)],[alpha]]


[16、13日]

16

(C_4 times C_2) rtimes_{phi} C_2

sage: C2 = SymmetricGroup(2); C4 = CyclicPermutationGroup(4)
sage: A = direct_product_permgroups([C2,C4])
sage: alpha = PermutationGroupMorphism(A,A,[A.gens()[0]^3*A.gens()[1],A.gens()[1]])
sage: phi = [[(1,2)],[alpha]]


[16,3]

16

C_4 rtimes_{phi} C_4

sage: C4 = CyclicPermutationGroup(4)
sage: alpha = PermutationGroupMorphism(C4,C4,[C4.gen().inverse()])
sage: phi = [[(1,2,3,4)],[alpha]]


[16,4]

17

C_{17}

[17,1]

18

C_{18}

[18,2]

18

C_6 times C_3

[18,5]

18

D_9

[18,1]

18

S_3 times C_3

[18,3]

18

Dih(C_3 times C_3)

sage: G = GeneralDihedralGroup([3,3])


[18,4]

19

C_{19}

[19,1]

20

C_{20}

[20，2]

20

C_{10} times C_2

[20,5]

20

D_{10}

[20,4]

20

Q_{{10}} （20阶双环群）

[20,1]

20

Hol(C_5)

sage: C5 = CyclicPermutationGroup(5)
sage: G = C5.holomorph()


[20，3]

21

C_{21}

[21,2]

21

C_7 rtimes_{phi} C_3

sage: C7 = CyclicPermutationGroup(7)
sage: alpha = PermutationGroupMorphism(C7,C7,[C7.gen()**4])
sage: phi = [[(1,2,3)],[alpha]]


[21,1]

22

C_{22}

[22,2]

22

D_{11}

[22,1]

23

C_{23}

[23,1]

24

C_{24}

[24,2]

24

D_{12}

[24,6]

24

Q_{{12}} （24阶双环群）

[24,4]

24

C_{12} times C_2

[24,9]

24

C_6 times C_2 times C_2

[24、15日]

24

S_4 （4个字母上的对称群）

sage: G = SymmetricGroup(4)


[24、12日]

24

S_3 times C_4

[24,5]

24

S_3 times C_2 times C_2

[24日、14日]

24

D_4 times C_3

[24日，10日]

24

Q times C_3

[24日，11日]

24

A_4 times C_2

[24日、13日]

24

Q_6 times C_2

[24,7]

24

Q rtimes_{phi} C_3

sage: Q = QuaternionGroup()
sage: alpha = PermutationGroupMorphism(Q,Q,[Q.gens()[0]*Q.gens()[1],Q.gens()[0].inverse()])
sage: phi = [[(1,2,3)],[alpha]]


[24,3]

24

C_3 rtimes_{phi} C_8

sage: C3 = CyclicPermutationGroup(3)
sage: alpha = PermutationGroupMorphism(C3,C3,[C3.gen().inverse()])
sage: phi = [[(1,2,3,4,5,6,7,8)],[alpha]]


[24,1]

24

C_3 rtimes_{phi} D_4

sage: C3 = CyclicPermutationGroup(3)
sage: alpha1 = PermutationGroupMorphism(C3,C3,[C3.gen().inverse()])
sage: alpha2 = PermutationGroupMorphism(C3,C3,[C3.gen()])
sage: phi = [[(1,2,3,4),(1,3)],[alpha1,alpha2]]


[24,8]

25

C_{25}

[25,1]

25

C_5 times C_5

[25,2]

26

C_{26}

[26,2]

26

D_{13}

[26,1]

27

C_{27}

[27,1]

27

C_9 times C_3

[27,2]

27

C_3 times C_3 times C_3

[27,5]

27

sage: G = SplitMetacyclicGroup(3,3)


[27,4]

27

(C_3 times C_3) rtimes_{phi} C_3

sage: C3 = CyclicPermutationGroup(3)
sage: A = direct_product_permgroups([C3,C3])
sage: alpha = PermutationGroupMorphism(A,A,[A.gens()[0]*A.gens()[1].inverse(),A.gens()[1]])
sage: phi = [[(1,2,3)],[alpha]]


[27,3]

28

C_{28}

[28,2]

28

C_{14} times C_2

[28,4]

28

D_{14}

[28,3]

28

Q_{{14}} （28阶双环群）

[28,1]

29

C_{29}

[29,1]

30

C_{30}

[30,4]

30

D_{15}

[30,3]

30

D_5 times C_3

[30,2]

30

D_3 times C_5

[30,1]

31

C_{31}

[31,1]

Kevin Halasz的表格

## 每一个有限列示的15阶或更少的组的施工说明¶

Sage能够很容易地将15阶以下的每一个群构造成有限呈现群。我们将首先讨论有限生成交换群，以及有限表示群的直积和半直积。

sage: A = groups.presentation.FGAbelian([4,2,2,2])


sage: A = groups.presentation.FGAbelian([2,3,5])
sage: B = groups.presentation.FGAbelian([30])


sage: D = G.direct_product(H)


sage: C2 = groups.presentation.Cyclic(2)
sage: C8 = groups.presentation.Cyclic(8)
sage: hom = (C2.gens(), [ ([C8([1])], [C8([-1])]) ])
sage: D = C2.semidirect_product(C8, hom)


sage: C = groups.presentation.Cyclic(n)


sage: D = groups.presentation.Dihedral(n)


1

sage: G = groups.presentation.Symmetric(1)


[1,1]

2

C_2

sage: G = groups.presentation.Symmetric(2)


[2,1]

3

C_3

sage: G = groups.presentation.Cyclic(3)


[3,1]

4

C_4

[4,1]

4

C_2 times C_2

sage: G = groups.presentation.Klein()


[4,2]

5

C_5

[5,1]

6

C_6

[6,2]

6

S_3 （3个字母上的对称群）

sage: G = groups.presentation.Symmetric(3)


[6,1]

7

C_7

[7,1]

8

C_8

[8,1]

8

C_4 times C_2

sage: G = groups.presentation.FGAbelian([4,2])


[8,2]

8

C_2times C_2times C_2

sage: G = groups.presentation.FGAbelian([2,2,2])


[8,5]

8

D_4

sage: G = groups.presentation.Dihedral(4)


[8,3]

8

sage: G = groups.presentation.Quaternion()


[8,4]

9

C_9

[9,1]

9

C_3 times C_3

[9,2]

10

C_{10}

[10,2]

10

D_5

[10,1]

11

C_{11}

[11,1]

12

C_{12}

[12,2]

12

C_6 times C_2

[12,5]

12

D_6

[12,4]

12

A_4 （4个字母交替分组）

sage: G = groups.presentation.Alternating(4)


[12,3]

12

Q_6 （12阶双环群）

sage: G = groups.presentation.DiCyclic(3)


[12,1]

13

C_{13}

[13,1]

14

C_{14}

[14,2]

14

D_{7}

[14,1]

15

C_{15}

[15,1]