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 S_n 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(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Names for the transitive subgroups of S6.

class sympy.combinatorics.galois.S5TransitiveSubgroups(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Names for the transitive subgroups of S5.

class sympy.combinatorics.galois.S4TransitiveSubgroups(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Names for the transitive subgroups of S4.

class sympy.combinatorics.galois.S3TransitiveSubgroups(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Names for the transitive subgroups of S3.

class sympy.combinatorics.galois.S2TransitiveSubgroups(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Names for the transitive subgroups of S2.

class sympy.combinatorics.galois.S1TransitiveSubgroups(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[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 PSL_2(mathbb{F}_5), as a transitive subgroup of S6, isomorphic to A_5.

Notes

This was computed using find_transitive_subgroups_of_S6().

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

Return a representation of the group PGL_2(mathbb{F}_5), as a transitive subgroup of S6, isomorphic to S_5.

Notes

See [1], Page 325.

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

Search for certain transitive subgroups of S_6.

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

In some cases there are well-known constructions that can be used. For example, S_5 is isomorphic to PGL_2(mathbb{F}_5), which acts in a natural way on the projective line P^1(mathbb{F}_5), a set of order 6.

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

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

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

  • A_4

  • S_4^- (S_4 not contained within A_6)

  • S_4^+ (S_4 contained within A_6)

  • A_4 times C_2

  • S_4 times C_2

  • G_{18}   = C_3^2 rtimes C_2

  • G_{36}^- = C_3^2 rtimes C_2^2

  • G_{36}^+ = C_3^2 rtimes C_4

  • G_{72}   = C_3^2 rtimes D_4

  • A_5

  • S_5

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