.. -*- coding: utf-8 -*- Grupos Finitos y Grupos Abelianos ================================= Sage ofrece algunas posibilidades para trabajar con grupos de permutaciones, grupos finitos clásicos (como :math:`SU(n,q)`), grupos finitos de matrices (con generadores definidos por el usuario), y grupos abelianos (incluso infinitos). La mayor parte de esta funcionalidad está implementada por medio de una interfaz con GAP. Por ejemplo, para crear un grupo de permutaciones, introducimos una lista de generadores: :: 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 (resultado aleatorio) Subgroup of (Permutation Group with generators [(3,4), (1,2,3)(4,5)]) generated by [(3,4), (1,2,3)(4,5)], Subgroup of (Permutation Group with generators [(3,4), (1,2,3)(4,5)]) generated by [(1,5,3), (1,5)(3,4), (1,5)(2,4)]] sage: G.center() Subgroup generated by [()] of (Permutation Group with generators [(3,4), (1,2,3)(4,5)]) sage: G.random_element() # random output (resultado aleatorio) (1,5,3)(2,4) sage: print(latex(G)) \langle (3,4), (1,2,3)(4,5) \rangle También podemos obtener la tabla de caracteres en formato LaTeX (usa ``show(G.character_table())`` para ver directamente el resultado de compilar el código 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 también incluye los grupos clásicos y los grupos de matrices sobre cuerpos finitos: :: 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], <BLANKLINE> [5 0] [0 3] ) sage: G = Sp(4,GF(7)) sage: G._gap_init_() 'Symplectic Group of degree 4 over Finite Field of size 7' sage: G Symplectic Group of degree 4 over Finite Field of size 7 sage: G.random_element() # random output (resultado aleatorio) [5 5 5 1] [0 2 6 3] [5 0 1 0] [4 6 3 4] sage: G.order() 276595200 También podemos hacer cálculos con grupos abelianos (finitos o infinitos): :: 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