# SageMath code for working with abstract group 64.54. # Some of these functions may take a long time to execute (this depends on the group). # Define group as a dicyclic group: G = DiCyclicGroup(16) # Order of the group: G.order() # Exponent of the group: G.exponent() # Automorphism group: libgap(G).AutomorphismGroup() # Composition factors of the group: G.composition_series() # Nilpotency class of the group: libgap(G).NilpotencyClassOfGroup() if G.is_nilpotent() else -1 # Derived length of the group: libgap(G).DerivedLength() # Determine if the group G is abelian: G.is_abelian() # Determine if the group G is cyclic: G.is_cyclic() # Determine if the group G is elementary abelian: G.is_elementary_abelian() # Determine if the group G is nilpotent: G.is_nilpotent() # Determine if the group G is perfect: G.is_perfect() # Determine if the group G is a p-group: G.is_pgroup() # Determine if the group G is polycyclic: G.is_polycyclic() # Determine if the group G is simple: G.is_simple() # Determine if the group G is solvable: G.is_solvable() # Determine if the group G is supersolvable: G.is_supersolvable() # Compute statistics for the group G: # Sage code to output the first two rows of the group statistics table element_orders = [g.order() for g in G] orders = sorted(list(set(element_orders))) print("Orders:", orders) print("Elements:", [element_orders.count(n) for n in orders], G.order()) cc_orders = [cc[0].order() for cc in G.conjugacy_classes()] print("Conjugacy classes:", [cc_orders.count(n) for n in orders], len(cc_orders)) # List of conjugacy classes of the group: G.conjugacy_classes() # Output not guaranteed to exactly match the LMFDB table # Compute statistics about the characters of G: # Outputs [[d_1,c_1], [d_2,c_2], ...] where c_i is the number of irr. complex chars. of G with degree d_i character_degrees = [c[0] for c in G.character_table()] [[n, character_degrees.count(n)] for n in set(character_degrees)] # Define group as Lie representations: MS = MatrixSpace(GF(31), 2, 2) MatrixGroup([MS([[21, 20], [2, 30]]), MS([[30, 11], [29, 21]]), MS([[30, 0], [0, 30]]), MS([[18, 25], [18, 13]])]) # Define the group with the given generators and relations: # This uses Sage's interface to GAP, as Sage (currently) has no native support for PC groups GPC = gap.new('PcGroupCode(309504273051162771967,64)'); a = GPC.1; b = GPC.2; # Define the group as a permutation group: PermutationGroup(['(1,34,2,33)(3,36,4,35)(5,38,6,37)(7,40,8,39)(9,42,10,41)(11,44,12,43)(13,46,14,45)(15,48,16,47)(17,50,18,49)(19,52,20,51)(21,54,22,53)(23,56,24,55)(25,58,26,57)(27,60,28,59)(29,62,30,61)(31,64,32,63)', '(1,18,2,17)(3,20,4,19)(5,22,6,21)(7,24,8,23)(9,26,10,25)(11,28,12,27)(13,30,14,29)(15,32,16,31)(33,58,34,57)(35,60,36,59)(37,62,38,61)(39,64,40,63)(41,56,42,55)(43,53,44,54)(45,50,46,49)(47,52,48,51)', '(1,13,5,12,4,16,8,10,2,14,6,11,3,15,7,9)(17,25,23,31,19,27,22,30,18,26,24,32,20,28,21,29)(33,41,39,47,35,43,38,46,34,42,40,48,36,44,37,45)(49,61,53,60,52,64,56,58,50,62,54,59,51,63,55,57)', '(1,7,3,6,2,8,4,5)(9,15,11,14,10,16,12,13)(17,21,20,24,18,22,19,23)(25,29,28,32,26,30,27,31)(33,37,36,40,34,38,35,39)(41,45,44,48,42,46,43,47)(49,55,51,54,50,56,52,53)(57,63,59,62,58,64,60,61)', '(1,4,2,3)(5,8,6,7)(9,12,10,11)(13,16,14,15)(17,19,18,20)(21,23,22,24)(25,27,26,28)(29,31,30,32)(33,35,34,36)(37,39,38,40)(41,43,42,44)(45,47,46,48)(49,52,50,51)(53,56,54,55)(57,60,58,59)(61,64,62,63)', '(1,2)(3,4)(5,6)(7,8)(9,10)(11,12)(13,14)(15,16)(17,18)(19,20)(21,22)(23,24)(25,26)(27,28)(29,30)(31,32)(33,34)(35,36)(37,38)(39,40)(41,42)(43,44)(45,46)(47,48)(49,50)(51,52)(53,54)(55,56)(57,58)(59,60)(61,62)(63,64)']) # Define the group as a matrix group with coefficients in GLFp: MS = MatrixSpace(GF(31), 2, 2) MatrixGroup([MS([[29, 28], [30, 29]]), MS([[8, 28], [1, 23]])]) # The abelianization of the group: G.quotient(G.commutator()) # The Schur multiplier of the group: G.homology(2) # List of subgroups of the group: G.subgroups() # Center of the group: G.center() # Commutator subgroup of the group G: G.commutator() # Frattini subgroup of the group G: G.frattini_subgroup() # Fitting subgroup of the group G: G.fitting_subgroup() # Socle of the group G: G.socle() # Derived series of the group G: G.derived_series() # Chief series of the group G: libgap(G).ChiefSeries() # The lower central series of the group G: G.lower_central_series() # The upper central series of the group G: G.upper_central_series() # Character table: G.character_table() # Output not guaranteed to exactly match the LMFDB table