# SageMath code for working with abstract group 972.802. # Some of these functions may take a long time to execute (this depends on the group). # Construction of abstract group: G = PermutationGroup(['(4,7)(5,8)(6,9)(13,16)(14,17)(15,18)(22,25)(23,26)(24,27)', '(2,3)(5,6)(8,9)(10,19)(11,21)(12,20)(13,22)(14,24)(15,23)(16,25)(17,27)(18,26)', '(10,11,12)(13,14,15)(16,17,18)(19,21,20)(22,24,23)(25,27,26)', '(4,5,6)(7,9,8)(13,14,15)(16,18,17)(22,23,24)(25,27,26)', '(1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6,24,15)(7,25,16)(8,26,17)(9,27,18)', '(1,7,4)(2,8,5)(3,9,6)(10,16,13)(11,17,14)(12,18,15)(19,25,22)(20,26,23)(21,27,24)', '(1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18,17)(19,21,20)(22,24,23)(25,27,26)']) # 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 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(12945860361070887587763028283778178204335,972)'); a = GPC.1; b = GPC.3; c = GPC.5; d = GPC.6; e = GPC.7; # Define the group as a permutation group: PermutationGroup(['(4,7)(5,8)(6,9)(13,16)(14,17)(15,18)(22,25)(23,26)(24,27)', '(2,3)(5,6)(8,9)(10,19)(11,21)(12,20)(13,22)(14,24)(15,23)(16,25)(17,27)(18,26)', '(10,11,12)(13,14,15)(16,17,18)(19,21,20)(22,24,23)(25,27,26)', '(4,5,6)(7,9,8)(13,14,15)(16,18,17)(22,23,24)(25,27,26)', '(1,19,10)(2,20,11)(3,21,12)(4,22,13)(5,23,14)(6,24,15)(7,25,16)(8,26,17)(9,27,18)', '(1,7,4)(2,8,5)(3,9,6)(10,16,13)(11,17,14)(12,18,15)(19,25,22)(20,26,23)(21,27,24)', '(1,3,2)(4,6,5)(7,9,8)(10,12,11)(13,15,14)(16,18,17)(19,21,20)(22,24,23)(25,27,26)']) # Define the group as a matrix group with coefficients in GLFp: MS = MatrixSpace(GF(3), 4, 4) MatrixGroup([MS([[1, 0, 0, 0], [0, 2, 0, 0], [0, 2, 2, 1], [0, 1, 0, 1]]), MS([[0, 0, 1, 0], [0, 1, 0, 0], [2, 0, 2, 0], [1, 0, 2, 1]]), MS([[2, 0, 0, 1], [0, 1, 0, 0], [1, 0, 1, 1], [2, 0, 0, 0]]), MS([[2, 2, 0, 1], [0, 1, 0, 0], [1, 2, 1, 1], [2, 1, 0, 0]]), MS([[1, 0, 0, 0], [0, 0, 1, 1], [0, 0, 1, 0], [0, 2, 1, 2]]), MS([[0, 1, 0, 2], [0, 2, 2, 2], [2, 0, 2, 0], [1, 1, 1, 0]]), MS([[1, 0, 0, 0], [0, 2, 0, 0], [2, 0, 2, 0], [1, 0, 0, 2]])]) # Define the group from the transitive group database: TransitiveGroup(27, 271) TransitiveGroup(27, 285) # 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