Galois Groups

Construct transitive subgroups of symmetric groups, useful in Galois theory.

Besides constructing instances of the PermutationGroup class to represent the transitive subgroups of Sn for small n, this module provides names for these groups.

In some applications, it may be preferable to know the name of a group, rather than receive an instance of the PermutationGroup class, and then have to do extra work to determine which group it is, by checking various properties.

Names are instances of Enum classes defined in this module. With a name in hand, the name’s get_perm_group method can then be used to retrieve a PermutationGroup.

The names used for groups in this module are taken from [1].

References

[R41]

Cohen, H. A Course in Computational Algebraic Number Theory.

class sympy.combinatorics.galois.S6TransitiveSubgroups(*values)[source]

Names for the transitive subgroups of S6.

class sympy.combinatorics.galois.S5TransitiveSubgroups(*values)[source]

Names for the transitive subgroups of S5.

class sympy.combinatorics.galois.S4TransitiveSubgroups(*values)[source]

Names for the transitive subgroups of S4.

class sympy.combinatorics.galois.S3TransitiveSubgroups(*values)[source]

Names for the transitive subgroups of S3.

class sympy.combinatorics.galois.S2TransitiveSubgroups(*values)[source]

Names for the transitive subgroups of S2.

class sympy.combinatorics.galois.S1TransitiveSubgroups(*values)[source]

Names for the transitive subgroups of S1.

sympy.combinatorics.galois.four_group()[source]

Return a representation of the Klein four-group as a transitive subgroup of S4.

sympy.combinatorics.galois.M20()[source]

Return a representation of the metacyclic group M20, a transitive subgroup of S5 that is one of the possible Galois groups for polys of degree 5.

Notes

See [1], Page 323.

sympy.combinatorics.galois.S3_in_S6()[source]

Return a representation of S3 as a transitive subgroup of S6.

Notes

The representation is found by viewing the group as the symmetries of a triangular prism.

sympy.combinatorics.galois.A4_in_S6()[source]

Return a representation of A4 as a transitive subgroup of S6.

Notes

This was computed using find_transitive_subgroups_of_S6().

sympy.combinatorics.galois.S4m()[source]

Return a representation of the S4- transitive subgroup of S6.

Notes

This was computed using find_transitive_subgroups_of_S6().

sympy.combinatorics.galois.S4p()[source]

Return a representation of the S4+ transitive subgroup of S6.

Notes

This was computed using find_transitive_subgroups_of_S6().

sympy.combinatorics.galois.A4xC2()[source]

Return a representation of the (A4 x C2) transitive subgroup of S6.

Notes

This was computed using find_transitive_subgroups_of_S6().

sympy.combinatorics.galois.S4xC2()[source]

Return a representation of the (S4 x C2) transitive subgroup of S6.

Notes

This was computed using find_transitive_subgroups_of_S6().

sympy.combinatorics.galois.G18()[source]

Return a representation of the group G18, a transitive subgroup of S6 isomorphic to the semidirect product of C3^2 with C2.

Notes

This was computed using find_transitive_subgroups_of_S6().

sympy.combinatorics.galois.G36m()[source]

Return a representation of the group G36-, a transitive subgroup of S6 isomorphic to the semidirect product of C3^2 with C2^2.

Notes

This was computed using find_transitive_subgroups_of_S6().

sympy.combinatorics.galois.G36p()[source]

Return a representation of the group G36+, a transitive subgroup of S6 isomorphic to the semidirect product of C3^2 with C4.

Notes

This was computed using find_transitive_subgroups_of_S6().

sympy.combinatorics.galois.G72()[source]

Return a representation of the group G72, a transitive subgroup of S6 isomorphic to the semidirect product of C3^2 with D4.

Notes

See [1], Page 325.

sympy.combinatorics.galois.PSL2F5()[source]

Return a representation of the group PSL2(F5), as a transitive subgroup of S6, isomorphic to A5.

Notes

This was computed using find_transitive_subgroups_of_S6().

sympy.combinatorics.galois.PGL2F5()[source]

Return a representation of the group PGL2(F5), as a transitive subgroup of S6, isomorphic to S5.

Notes

See [1], Page 325.

sympy.combinatorics.galois.find_transitive_subgroups_of_S6(
*targets,
print_report=False,
)[source]

Search for certain transitive subgroups of S6.

The symmetric group S6 has 16 different transitive subgroups, up to conjugacy. Some are more easily constructed than others. For example, the dihedral group D6 is immediately found, but it is not at all obvious how to realize S4 or S5 transitively within S6.

In some cases there are well-known constructions that can be used. For example, S5 is isomorphic to PGL2(F5), which acts in a natural way on the projective line P1(F5), a set of order 6.

In absence of such special constructions however, we can simply search for generators. For example, transitive instances of A4 and S4 can be found within S6 in this way.

Once we are engaged in such searches, it may then be easier (if less elegant) to find even those groups like S5 that do have special constructions, by mere search.

This function locates generators for transitive instances in S6 of the following subgroups:

  • A4

  • S4 (S4 not contained within A6)

  • S4+ (S4 contained within A6)

  • A4×C2

  • S4×C2

  • G18=C32C2

  • G36=C32C22

  • G36+=C32C4

  • G72=C32D4

  • A5

  • S5

Note: Each of these groups also has a dedicated function in this module that returns the group immediately, using generators that were found by this search procedure.

The search procedure serves as a record of how these generators were found. Also, due to randomness in the generation of the elements of permutation groups, it can be called again, in order to (probably) get different generators for the same groups.

Parameters:

targets : list of S6TransitiveSubgroups values

The groups you want to find.

print_report : bool (default False)

If True, print to stdout the generators found for each group.

Returns:

dict

mapping each name in targets to the PermutationGroup that was found

References