If it is possible to obtain the full factorization of an integer polynomial over its splitting field, the Galois action of the group of the splitting field can be made entirely explicit. In this example we show how it can be done in Magma, and how to find the Galois correspondence (between subgroups and subfields). Although there exists a polynomial-time algorithm for the factorization of polynomials over number fields, in practice this is the bottleneck for our approach to Galois theory. Only in small examples we will be able to construct the splitting field as below.
We begin with a cubic polynomial f and determine its Galois group using the intrinsic function GaloisGroup(f). This will be a degree-3 representation.
> R<x> := PolynomialRing(RationalField());
> f := x^3 - x - 1;
> GaloisGroup(f);
Permutation group G acting on a set of cardinality 3
Order = 6 = 2 * 3
(1, 2)
(1, 2, 3)
Next, we find the Galois group in two degree-6 representations. Firstly, we construct it bare-handed. We start by obtaining the splitting field for f as a two-step extension of .
> N<n> := NumberField(f);
> ff := Factorization( PolynomialRing(N) ! f );
> ff;
[
<$.1 - n, 1>,
<$.1^2 + n*$.1 + n^2 - 1, 1>
]
> M<m> := ext< N | ff[2][1] >;
> A<a> := AbsoluteField(M);
> A;
Number Field with defining polynomial x^6 - 6*x^4 + 9*x^2 + 23
over the Rational Field
We factorize f over the splitting field, and obtain all its roots
from the linear factors.
> S<s> := PolynomialRing(A);
> factn := Factorization( S ! DefiningPolynomial(A) );
> factn;
[
<s - a, 1>,
<s + a, 1>,
<s - 1/6*a^4 + 5/6*a^2 - 1/2*a - 2/3, 1>,
<s - 1/6*a^4 + 5/6*a^2 + 1/2*a - 2/3, 1>,
<s + 1/6*a^4 - 5/6*a^2 - 1/2*a + 2/3, 1>,
<s + 1/6*a^4 - 5/6*a^2 + 1/2*a + 2/3, 1>
]
> C := [ -Coefficient(factr[1], 0) : factr in factn];
> C;
[
a,
-a,
1/6*a^4 - 5/6*a^2 + 1/2*a + 2/3,
1/6*a^4 - 5/6*a^2 - 1/2*a + 2/3,
-1/6*a^4 + 5/6*a^2 + 1/2*a - 2/3,
-1/6*a^4 + 5/6*a^2 - 1/2*a - 2/3
]
Each of the roots is an algebraic conjugate of the primitive
element a of the field. The elements of the Galois group of A
over are obtained by sending a to one of its conjugates.
Thus the action on A of such an element of the Galois group is
determined by the polynomial (with rational coefficients) expressing
the conjugate in a. These polynomials are stored in P below.
We (again) determine the Galois group: by numbering the algebraic
conjugates > P := [ R ! Eltseq(x) : x in C];
> P;
[
x,
-x,
1/6*x^4 - 5/6*x^2 + 1/2*x + 2/3,
1/6*x^4 - 5/6*x^2 - 1/2*x + 2/3,
-1/6*x^4 + 5/6*x^2 + 1/2*x - 2/3,
-1/6*x^4 + 5/6*x^2 - 1/2*x - 2/3
]
> I := [ [ Index(C, Evaluate(p, c)) : p in P ] : c in C];
> I;
[
[ 1, 2, 3, 4, 5, 6 ],
[ 2, 1, 4, 3, 6, 5 ],
[ 3, 6, 1, 5, 4, 2 ],
[ 4, 5, 2, 6, 3, 1 ],
[ 5, 4, 6, 2, 1, 3 ],
[ 6, 3, 5, 1, 2, 4 ]
]
> H := sub< Sym(6) | I >;
> H;
Permutation group H acting on a set of cardinality 6
(1, 2)(3, 4)(5, 6)
(1, 3)(2, 6)(4, 5)
(1, 4, 6)(2, 5, 3)
(1, 5)(2, 4)(3, 6)
(1, 6, 4)(2, 3, 5)
Lastly, we find the Galois group G using the intrinsic function once more, but in terms of the degree-6 defining polynomial of the splitting field. It will be conjugate to H: a simple renumbering of roots makes them equal. As we see, we only need to cyclically permute three roots.
> G := GaloisGroup(DefiningPolynomial(A)); > fl, el := IsConjugate(Sym(6), G, H); > fl, el; true (3, 4, 5)
Since we have the explicit action of the Galois group, we can now find the
quadratic subfield of A corresponding to the subgroup K of H of order
3. We create the sequence of automorphisms of A contained in K
and see that the trace of
generates the required quadratic field.
> S := Subgroups(H); > S; Conjugacy classes of subgroups ------------------------------ [1] Order 1 Length 1 Permutation group acting on a set of cardinality 6 Order = 1 Id($) [2] Order 2 Length 3 Permutation group acting on a set of cardinality 6 (1, 2)(3, 4)(5, 6) [3] Order 3 Length 1 Permutation group acting on a set of cardinality 6 (1, 6, 4)(2, 3, 5) [4] Order 6 Length 1 Permutation group acting on a set of cardinality 6 (1, 2)(3, 4)(5, 6) (1, 6, 4)(2, 3, 5) > K := S[3]`subgroup; // extract subgroup from the record S[3] > J := [ hom< A -> A | C[1^k] > : k in K ]; > tra := &+[ h(C[1]^3) : h in J ]; > tra, MinimalPolynomial(tra); 3*a^3 - 9*a x^2 + 207 > SquareFree(-207); -23 3Therefore the quadratic subfield is
Previous Group: An octic field and its units
Up: Number fields