Galois groups of field extensions.

We do not necessarily require extensions to be normal, but we do require them to be separable.

When an extension is not normal, the Galois group refers to the automorphism group of the normal closure.

AUTHORS:

  • David Roe (2019): initial version

class sage.groups.galois_group._GaloisMixin[source]

This class provides methods for Galois groups, allowing concrete instances to inherit from both permutation group and abelian group classes.

class sage.groups.galois_group._SubGaloisMixin[source]

This class provides methods for subgroups of Galois groups, allowing concrete instances to inherit from both permutation group and abelian group classes.

class sage.groups.galois_group.GaloisGroup_ab(field, generator_orders, algorithm=None, gen_names='sigma')[source]

Bases: _GaloisMixin, AbelianGroup_class

Abelian Galois groups

Subgroup[source]

alias of GaloisSubgroup_ab

is_galois()[source]

Abelian extensions are Galois.

For compatibility with Galois groups of number fields.

EXAMPLES:

sage: GF(9).galois_group().is_galois()                                      # needs sage.rings.finite_rings
True
>>> from sage.all import *
>>> GF(Integer(9)).galois_group().is_galois()                                      # needs sage.rings.finite_rings
True
GF(9).galois_group().is_galois()                                      # needs sage.rings.finite_rings
permutation_group()[source]

Return a permutation group giving the action on the roots of a defining polynomial.

This is the regular representation for the abelian group, which is not necessarily the smallest degree permutation representation.

EXAMPLES:

sage: GF(3^10).galois_group().permutation_group()                           # needs sage.libs.gap sage.rings.finite_rings
Permutation Group with generators [(1,2,3,4,5,6,7,8,9,10)]
>>> from sage.all import *
>>> GF(Integer(3)**Integer(10)).galois_group().permutation_group()                           # needs sage.libs.gap sage.rings.finite_rings
Permutation Group with generators [(1,2,3,4,5,6,7,8,9,10)]
GF(3^10).galois_group().permutation_group()                           # needs sage.libs.gap sage.rings.finite_rings
transitive_number(algorithm=None, recompute=False)[source]

Return the transitive number for the action on the roots of the defining polynomial.

For abelian groups, there is only one transitive action up to isomorphism (left multiplication of the group on itself), so we identify that action.

EXAMPLES:

sage: from sage.groups.galois_group import GaloisGroup_ab
sage: Gtest = GaloisGroup_ab(field=None, generator_orders=(2,2,4))
sage: Gtest.transitive_number()                                             # needs sage.libs.gap
2
>>> from sage.all import *
>>> from sage.groups.galois_group import GaloisGroup_ab
>>> Gtest = GaloisGroup_ab(field=None, generator_orders=(Integer(2),Integer(2),Integer(4)))
>>> Gtest.transitive_number()                                             # needs sage.libs.gap
2
from sage.groups.galois_group import GaloisGroup_ab
Gtest = GaloisGroup_ab(field=None, generator_orders=(2,2,4))
Gtest.transitive_number()                                             # needs sage.libs.gap
class sage.groups.galois_group.GaloisGroup_cyc(field, generator_orders, algorithm=None, gen_names='sigma')[source]

Bases: GaloisGroup_ab

Cyclic Galois groups

signature()[source]

Return 1 if contained in the alternating group, -1 otherwise.

EXAMPLES:

sage: GF(3^2).galois_group().signature()                                    # needs sage.rings.finite_rings
-1
sage: GF(3^3).galois_group().signature()                                    # needs sage.rings.finite_rings
1
>>> from sage.all import *
>>> GF(Integer(3)**Integer(2)).galois_group().signature()                                    # needs sage.rings.finite_rings
-1
>>> GF(Integer(3)**Integer(3)).galois_group().signature()                                    # needs sage.rings.finite_rings
1
GF(3^2).galois_group().signature()                                    # needs sage.rings.finite_rings
GF(3^3).galois_group().signature()                                    # needs sage.rings.finite_rings
transitive_number(algorithm=None, recompute=False)[source]

Return the transitive number for the action on the roots of the defining polynomial.

EXAMPLES:

sage: GF(2^8).galois_group().transitive_number()                            # needs sage.rings.finite_rings
1
sage: GF(3^32).galois_group().transitive_number()                           # needs sage.rings.finite_rings
33
sage: GF(2^60).galois_group().transitive_number()                           # needs sage.rings.finite_rings
Traceback (most recent call last):
...
NotImplementedError: transitive database only computed up to degree 47
>>> from sage.all import *
>>> GF(Integer(2)**Integer(8)).galois_group().transitive_number()                            # needs sage.rings.finite_rings
1
>>> GF(Integer(3)**Integer(32)).galois_group().transitive_number()                           # needs sage.rings.finite_rings
33
>>> GF(Integer(2)**Integer(60)).galois_group().transitive_number()                           # needs sage.rings.finite_rings
Traceback (most recent call last):
...
NotImplementedError: transitive database only computed up to degree 47
GF(2^8).galois_group().transitive_number()                            # needs sage.rings.finite_rings
GF(3^32).galois_group().transitive_number()                           # needs sage.rings.finite_rings
GF(2^60).galois_group().transitive_number()                           # needs sage.rings.finite_rings
class sage.groups.galois_group.GaloisSubgroup_ab(ambient, gens, names='f', category=None)[source]

Bases: AbelianGroup_subgroup, _SubGaloisMixin

Subgroups of abelian Galois groups.