Finite Groups, Abelian Groups - Tutorial (original) (raw)

Sage has some support for computing with permutation groups, finite classical groups (such as \(SU(n,q)\)), finite matrix groups (with your own generators), and abelian groups (even infinite ones). Much of this is implemented using the interface to GAP.

For example, to create a permutation group, give a list of generators, as in the following example.

Sage

sage: G = PermutationGroup(['(1,2,3)(4,5)', '(3,4)']) sage: G Permutation Group with generators [(3,4), (1,2,3)(4,5)] sage: G.order() 120 sage: G.is_abelian() False sage: G.derived_series() # random-ish output [Permutation Group with generators [(1,2,3)(4,5), (3,4)], Permutation Group with generators [(1,5)(3,4), (1,5)(2,4), (1,3,5)]] sage: G.center() Subgroup generated by [()] of (Permutation Group with generators [(3,4), (1,2,3)(4,5)]) sage: G.random_element() # random output (1,5,3)(2,4) sage: print(latex(G)) \langle (3,4), (1,2,3)(4,5) \rangle

Python

from sage.all import * G = PermutationGroup(['(1,2,3)(4,5)', '(3,4)']) G Permutation Group with generators [(3,4), (1,2,3)(4,5)] G.order() 120 G.is_abelian() False G.derived_series() # random-ish output [Permutation Group with generators [(1,2,3)(4,5), (3,4)], Permutation Group with generators [(1,5)(3,4), (1,5)(2,4), (1,3,5)]] G.center() Subgroup generated by [()] of (Permutation Group with generators [(3,4), (1,2,3)(4,5)]) G.random_element() # random output (1,5,3)(2,4) print(latex(G)) \langle (3,4), (1,2,3)(4,5) \rangle

You can also obtain the character table (in LaTeX format) in Sage:

Sage

sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3)]]) sage: latex(G.character_table()) # random \left(\begin{array}{rrrr} 1 & 1 & 1 & 1 \ 1 & -\zeta_{3} - 1 & \zeta_{3} & 1 \ 1 & \zeta_{3} & -\zeta_{3} - 1 & 1 \ 3 & 0 & 0 & -1 \end{array}\right)

Python

from sage.all import * G = PermutationGroup([[(Integer(1),Integer(2)),(Integer(3),Integer(4))], [(Integer(1),Integer(2),Integer(3))]]) latex(G.character_table()) # random \left(\begin{array}{rrrr} 1 & 1 & 1 & 1 \ 1 & -\zeta_{3} - 1 & \zeta_{3} & 1 \ 1 & \zeta_{3} & -\zeta_{3} - 1 & 1 \ 3 & 0 & 0 & -1 \end{array}\right)

Sage also includes classical and matrix groups over finite fields:

Sage

sage: MS = MatrixSpace(GF(7), 2) sage: gens = [MS([[1,0],[-1,1]]),MS([[1,1],[0,1]])] sage: G = MatrixGroup(gens) sage: G.conjugacy_classes_representatives() ( [1 0] [0 6] [0 4] [6 0] [0 6] [0 4] [0 6] [0 6] [0 6] [4 0] [0 1], [1 5], [5 5], [0 6], [1 2], [5 2], [1 0], [1 4], [1 3], [0 2],

[5 0] [0 3] ) sage: G = Sp(4,GF(7)) sage: G Symplectic Group of degree 4 over Finite Field of size 7 sage: G.random_element() # random output [5 5 5 1] [0 2 6 3] [5 0 1 0] [4 6 3 4] sage: G.order() 276595200

Python

from sage.all import * MS = MatrixSpace(GF(Integer(7)), Integer(2)) gens = [MS([[Integer(1),Integer(0)],[-Integer(1),Integer(1)]]),MS([[Integer(1),Integer(1)],[Integer(0),Integer(1)]])] G = MatrixGroup(gens) G.conjugacy_classes_representatives() ( [1 0] [0 6] [0 4] [6 0] [0 6] [0 4] [0 6] [0 6] [0 6] [4 0] [0 1], [1 5], [5 5], [0 6], [1 2], [5 2], [1 0], [1 4], [1 3], [0 2], [5 0] [0 3] ) G = Sp(Integer(4),GF(Integer(7))) G Symplectic Group of degree 4 over Finite Field of size 7 G.random_element() # random output [5 5 5 1] [0 2 6 3] [5 0 1 0] [4 6 3 4] G.order() 276595200

You can also compute using abelian groups (infinite and finite):

Sage

sage: F = AbelianGroup(5, [5,5,7,8,9], names='abcde') sage: (a, b, c, d, e) = F.gens() sage: d * b2 * c3 b^2c^3d sage: F = AbelianGroup(3,[2]*3); F Multiplicative Abelian group isomorphic to C2 x C2 x C2 sage: H = AbelianGroup([2,3], names="xy"); H Multiplicative Abelian group isomorphic to C2 x C3 sage: AbelianGroup(5) Multiplicative Abelian group isomorphic to Z x Z x Z x Z x Z sage: AbelianGroup(5).order() +Infinity

Python

from sage.all import * F = AbelianGroup(Integer(5), [Integer(5),Integer(5),Integer(7),Integer(8),Integer(9)], names='abcde') (a, b, c, d, e) = F.gens() d * bInteger(2) * cInteger(3) b^2c^3d F = AbelianGroup(Integer(3),[Integer(2)]*Integer(3)); F Multiplicative Abelian group isomorphic to C2 x C2 x C2 H = AbelianGroup([Integer(2),Integer(3)], names="xy"); H Multiplicative Abelian group isomorphic to C2 x C3 AbelianGroup(Integer(5)) Multiplicative Abelian group isomorphic to Z x Z x Z x Z x Z AbelianGroup(Integer(5)).order() +Infinity