You are on page 1of 10

Galois Groups of Number Fields

William Stein (2004, 2005): initial version
David Loeffler (2009): rewrite to give explicit homomorphism groups
Standard test of pickleability:
sage: G = NumberField(x^3 + 2, 'alpha').galois_group(type="pari"); G
Galois group PARI group [6, -1, 2, "S3"] of degree 3 of the Number Field in alpha with defining polynomial x^3 + 2
sage: G == loads(dumps(G))
sage: G = NumberField(x^3 + 2, 'alpha').galois_group(names='beta'); G
Galois group of Galois closure in beta of Number Field in alpha with defining polynomial x^3 + 2
sage: G == loads(dumps(G))


alias of  GaloisGroup_v1
class  sage.rings.number_field.galois_group.GaloisGroupElement
Bases:  sage.groups.perm_gps.permgroup_element.PermutationGroupElement
An element of a Galois group. This is stored as a permutation, but may also be made to act on elements of the field
(generally returning elements of its Galois closure).
sage: K.<w> = QuadraticField(-7); G = K.galois_group()
sage: G[1]
sage: G[1](w + 2)
-w + 2

EXAMPLE: . G = L.5)(2.sigma(a) for sigma in G) == f.2).18/5*a + 96/5 sage: prod(x .4)(3.'w').galois_group() sage: G[1].galois_group(names='y') sage: G[4] (1.as_hom() Ring endomorphism of Number Field in w with defining polynomial x^2 + 7 Defn: w |--> -w TESTS: Number fields defined by non­monic and non­integral polynomials are supported (trac ticket #252): sage: R.<v> = NumberField(x^3 .56*x + 123 Defn: a |--> -7/15*a^2 . where L is the Galois closure of the ambient number field.1/2*y sage: G[4](G[4](G[4](v))) 1/18*y^4 as_hom() Return the homomorphism L ­> L corresponding to self. EXAMPLE: sage: G = QuadraticField(-7.6) sage: G[4](v) 1/18*y^4 sage: G[4](G[4](v)) -1/36*y^4 .galois_group() sage: G[1].<x> = QQ[] sage: f = 7/9*x^3 + 7/3*x^2 .as_hom() Ring endomorphism of Number Field in a with defining polynomial 7/9*x^3 + 7/3*x^2 . Should only be used if P is prime and s is in the decomposition group of P.monic() True ramification_degree(P) Return the greatest value of v such that s acts trivially modulo P^v.sage: L.56*x + 123 sage: K.<a> = NumberField(f) sage: G = K.

 do  G. EXAMPLE: sage: L.SageObject A wrapper around a class representing an abstract transitive group. fixed_field() Return  the  fixed  field  of  this  subgroup  (as  a  subfield  of  the  Galois  closure  of  the  number  field  associated  to  the ambient Galois group).number_field.<b> = NumberField(x^3 .sage_object.number_field. elts) Bases:  sage. Ring morphism: From: Number Field in a0 with defining polynomial x^2 + 2 To: Number Field in a with defining polynomial x^4 + 1 Defn: a0 |--> a^3 + a) class  sage.decomposition_group(L. This is just a fairly minimal object at present.rings. EXAMPLES: .number_field. as returned by functions such as  decomposition_group.GaloisGroup_subgroup(ambient.3.galois_group() sage: H = G.ramification_degree(P) 4 class  sage.galois_group. K. number_field) Bases:  sage. To get the underlying[0]) sage: H. 1/18*b^4 .rings.structure.sage: K. 'a').GaloisGroup_v1(group.number_field().GaloisGroup_v2 A subgroup of a Galois group.<a> = NumberField(x^4 + 1) sage: G = L.galois_group.fixed_field() (Number Field in a0 with defining polynomial x^2 + 2.galois_closure() sage: G = K.galois_group.rings.1/2*b) sage: G(s). and to get the corresponding number field do  G.primes_above(3)[0] sage: s = hom(K.galois_group() sage: P = K. For a more sophisticated interface use the  type=None option.

"D(6) = S(3)[x]2"] of degree 6 of the Number Field in t with defining polyn sage: G.3).galois_group(type="pari"). (1. "S3"] of degree 3 of the Number Field in a with defining polynomial x^3 . 'theta'). (1.number_field() Number Field in t with defining polynomial x^6 + 2 order() Return the order of this Galois group. EXAMPLES: sage: G = NumberField(x^3 + 2*x + 2.database_gap [(). P # optional . (2. 't'). G Galois group PARI group [ H PARI group [6.galois_group(type="pari") sage: H = G.database_gap Transitive group number 2 of degree 3 sage: list(P) # optional . EXAMPLES: . 2. PARI group [6. -1. 2.2).galois_group(type="pari").3)] number_field() Return the number field of which this is the Galois group.2 group() Return the underlying abstract group. -1.permutation_group().2.3. (1. (1.2).order() 6 sage: G. 3.3). "S3"] of degree 3 sage: G. -1.sage: K = QQ[2^(1/3)] sage: G = K. EXAMPLES: sage: G = NumberField(x^6 + 2. "S3"] of degree 3 sage: P = H. G Galois group PARI group [6. -1.number_field() Number Field in a with defining polynomial x^3 .2 sage: G.

ᵖ   such  that  s(x) ᵖ  is an unramified prime ideal.6)(3. not as permutations of the roots (in L)  of  the  defining  polynomial  of  K.5)(2.artin_symbol(13) (1.3)(5.2) .8). -1.  Thus  the permutation group that is returned is always simply­transitive. 3.4)(2.order() 20 class  sage.  but  is  harder  to  implement.<b> = NumberField(x^4 .  and elements are stored as permutations of the roots of the defining polynomial of L. (1.galois_closure() sage: G = K.7). names=None) Bases:  sage.5)(2. G Galois group PARI group [20..8).  where  p  is  the  residue EXAMPLES: sage: K. The  ‘arithmetical’  features  (decomposition  and  ramification  groups.GaloisGroup_v2(number_field.galois_group() sage: [G.PermutationGroup_generic The Galois group of an (absolute) number field.artin_symbol(17) Traceback (most recent call last): .2*x^2 + 2.galois_group.galois_group(type="pari"). (1. Note:   We  define  the  Galois  group  of  a  non­normal  field  K  to  be  the  Galois  group  of  its  Galois  closure  L.galois_group().7)] sage: G.perm_gps.number_field.8)(6. artin_symbol(P) Return the Artin symbol  ( ᵖ ᵖ K/Q ) .artin_symbol(P) for P in K.sage: G = NumberField(x^5 + 2..rings.7)(4.6)(3.  The  latter  would  probably  be  preferable. This is = x p mod ᵖ .4)(2. (1. 'a').8)(6.7)(4.3)(5. and  the  unique  element  s  of  the  decomposition  group  of  characteristic of  . where K is the number field of self.permgroup. Artin  symbols  etc)  are  only  available  for  Galois fields. ValueError: Fractional ideal (17) is not prime sage: QuadraticField(-7.primes_above(7)] [(1. 'theta_1').groups. "F(5) = 5:4"] of degree 5 of the Number Field in theta_1 with defining poly sage: G.'c').

This function will raise an error if P is not prime or the given number field is not Galois.5)(3. whenever that is well­defined. the subgroup of elements that map P to itself..4)(2. EXAMPLE: sage: L.galois_group() .complex_conjugation().z^2 .galois_group() sage: conj = G. an embedding into R or C. so complex conjugation really depends on the choice of embedding: sage: L = NumberField(x^6 + 40*x^3 + 1372.3)(2.galois_group() sage: [G.complex_conjugation(x) for x in L.6) sage: conj(z) -z^5 .6)(4.1 An example where the field is not CM. EXAMPLE: sage: K.e. If P is not specified.6)] decomposition_group(P) Decomposition group of a prime ideal P.2)(3.artin_symbol(K..) is ramified complex_conjugation(P=None) Return  the  unique  element  of  self  corresponding  to  complex  conjugation.'a') sage: G = L.z^3 .'b'). (1.galois_closure() sage: P = K.4)(3. i.. use the “standard” embedding.z^4 . i.  for  a  specified  embedding  P  into  the complex numbers.places()] [(1.<a> = NumberField(x^4 . a^2]) sage: G = K.primes_above(2)[0]) Traceback (most recent call last): .4)(5. P can also be an infinite prime.sage: G. ValueError: Fractional ideal (.5).z .ideal([17.<z> = CyclotomicField(7) sage: G = L. (1. This is the same as the Galois group of the extension of local fields obtained by completing at P.6).e. conj (1.5)(2..2*x^2 + 2.

8)(2.order() 2 inertia_group(P) Return  the  inertia  group  of  the  prime  P.'a').  the  group  of  elements  acting  trivially  modulo  P.inertia_group(K.decomposition_group(P) Subgroup [(). G=L. (1. EXAMPLE: sage: K.galois_closure(). EXAMPLE: sage: NumberField(x^3 .places()[0] sage: G.3 sage: G.<b> = NumberField(x^2 .'a').7)(3..'a') sage: G = K.inertia_group(K.primes_above(5)[0]) Subgroup [()] of Galois group of Number Field in b with defining polynomial x^2 ..galois_group() sage: x = L.3...galois_group() sage: G. ValueError: Fractional ideal (.galois_group(names='b').'a').  i.x + 1.2.decomposition_group(x).galois_group().sage: G.is_galois() . ValueError: Fractional ideal (17) is not prime An example with an infinite place: sage: L.is_galois() False sage: NumberField(x^2 .x + 1.3 is_galois() Return True if the underlying number field of self is actually Galois..) is not prime sage: G.  This  is  just  the  0th ramification group of P.primes_above(2)[0]) Galois group of Number Field in b with defining polynomial x^2 .6)(4.decomposition_group(P^2) Traceback (most recent call last): .5)] of Galois group of Number Field in a with defining polynomial x^8 ..decomposition_group(17) Traceback (most recent call last): .20*x^6 sage: G.e.<b> = NumberField(x^3 .

galois_group(). 'a') sage: K.number_field() is K True ramification_breaks(P) Return the set of ramification breaks of the prime ideal P.galois_group(). EXAMPLE: sage: K.x + 1. (1.40*x^2 + 1156) sage: G = K.galois_group() sage: P = K. This is only defined for Galois fields.3).<b> = NumberField(x^8 .2)] ngens() Number of generators of self. EXAMPLE: sage: K = NumberField(x^3 . 'a').2.galois_group(names='b').'a').primes_above(2)[0] .ngens() 1 number_field() The ambient number field.3*x + 1. the set of indices i such that the ramification group  Gi+1 ≠ Gi .20*x^6 + 104*x^4 .True list() List of the elements of self. EXAMPLE: sage: QuadraticField(-23.3.list() [(). i. EXAMPLE: sage: NumberField(x^3 .e. (1.

EXAMPLE: sage: G = NumberField(x^3 . (1. 'a') sage: K.galois_group() sage: P = K. v) Return the vth ramification group of self for the prime P.ramification_breaks(P) {1.5)] of Galois group of Number Field in b with defining polynomial x^6 sage: G. i).e. Mostly for internal use. 3.ramification_group(P.order() / G.galois_group(names='b'). i.4.6*x^4 + 9*x^2 + 23 sage: L = QuadraticField(-23. EXAMPLE: sage: K = NumberField(x^3 . This is only defined for Galois fields. (1.2. EXAMPLE: sage: K. 5) Subgroup [()] of Galois group of Number Field in b with defining polynomial x^6 + 243 splitting_field() The Galois closure of the ambient number field. 3) Subgroup [(). the set of elements s of self such that s acts trivially modulo P^(v+1).'a'). i+1). 'a').1.ramification_ 2 ramification_group(P.splitting_field() Number Field in b with defining polynomial x^6 .ramification_group(P.<b> = NumberField(x^3 .6).x .ramification_group(P.5.primes_above(3)[0] sage: G.sage: G. 'c').6.splitting_field() is L True subgroup(elts) Return the subgroup of self with the given elements.galois_closure() sage: G=K. 5} sage: min( [ G.galois_closure('b').galois_group().x + 1.ramification_group(P.order() for i in G.galois_group() .4)(3.2)(3.3. L.

2)(4.6.3)(4.subgroup([ G(1). G([(1.(]).2.5)]) ]) Subgroup [().sage: G. (1.5.5)] of Galois group of Number Field in b with defining polynomial x^6 .3). (1. G([(1.(4.6).6.2).3.