Sage поддерживает вычисления с группами перестановок, конечными классическими группами (как, например, SU(n,q)), конечными матричными группами (с собственными генераторами) и группами Абеля (даже с бесконечными). Многое из этого осуществляется посредством интерфейса к GAP.
Например, чтобы построить группу перестановок, надо задать список генераторов:
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 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 of (Permutation Group with generators [(3,4), (1,2,3)(4,5)]) generated by [()] sage: G.random_element() # random output (1,5,3)(2,4) sage: print latex(G) \langle (3,4), (1,2,3)(4,5) \rangle
Также можно получить символьную таблицу в формате LaTeX:
sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3)]]) sage: latex(G.character_table()) \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 также включает в себя классические и матричные группы для конечных полей:
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_class_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], <BLANKLINE> [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
Также можно производить вычисления с группами Абеля (конечными и бесконечными):
sage: F = AbelianGroup(5, [5,5,7,8,9], names='abcde') sage: (a, b, c, d, e) = F.gens() sage: d * b**2 * c**3 b^2*c^3*d 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