|
Finding Galois groups (of normal closures) of polynomials over
rational function fields over k∈{Q, Fq}, where Fq denotes
the finite field of characteristic p with q=pr, r∈Z> 0
is a hard problem, in general. All practical algorithms used the
classification of transitive groups, which is known up to degree 31
[CHM98]. These algorithms fall into two groups: The
absolute resolvent method [SM85] and the method of Stauduhar
[Sta73].
The Magma implementation is based on an extension of the method of
Stauduhar by Klüners, Geißler [Gei03], [GK00]
and, more recently, Fieker [FK14] and Sutherland [Sut15].
There is no longer any limit on the degree of the polynomials or fields
as this algorithm does not use the classification of transitive groups.
In contrast to the absolute resolvent method, it also provides
the explicit action on the roots of the polynomial f which generates
the function field. The algorithm strongly depends on the fact that
the corresponding problem is implemented for the residue class field.
Roughly speaking, the method of Stauduhar traverses the subgroup
lattice of transitive permutation groups of degree n from the
symmetric group to the actual Galois group. This is done by using
so-called relative resolvents. Resolvents are polynomials whose
splitting fields are subfields of the splitting field of the given
polynomial which are computed using approximations of the roots of the
polynomial f.
If the field (or the field defined by a polynomial) has subfields
(i.e. the Galois group is imprimitive) the current implementation
changes the starting point of the algorithm
in the subgroup lattice, to get as close as possible to the actual
Galois group. This is done via computation of subfields of a stem
field of f, that is the field extension of k(t) which we get by
adjoining a root of f to k(t).
The Galois group is found as a subgroup of the
intersection of suitable wreath products (using the knowledge of the
subfields) which may be easily computed.
If the field (or the field defined by a polynomial) does not have subfields
(i.e. the Galois group is primitive)
we use a combination of the
method of Stauduhar and the absolute resolvent method. The Frobenius
automorphism of the underlying field already determines a subgroup of
the Galois group, which is used to speed up computations in the
primitive case.
The algorithms used here are similar to those use for number fields.
See also Chapter GALOIS GROUPS AND AUTOMORPHISMS. In addition to the intrinsics described
here, some of the intrinsics described in
Section Galois Groups apply to polynomials over function fields also.
Prime: RngElt Default:
NextPrime: UserProgram Default:
ProofEffort: RngIntElt Default: 10
Ring: GaloisData Default:
ShortOK: BoolElt Default: false
Old: BoolElt Default: false
SetVerbose("GaloisGroup", n): Maximum: 5
Given a separable polynomial f(t, x) of degree n
over the rational function field k(t), k∈{Q, Fq},
or an extension K thereof (if k = Fq) this function returns a permutation
group that forms the Galois group of
a splitting field for f
in some algebraic closure of K.
The permutation group acts on the points 1, 2, ..., n. The roots of f are calculated in the process, expressed
as power series and returned as the second argument: For a prime
polynomial p(t)∈k(t) denote by bar(N) the splitting field of
the polynomial f(t, x) mod p(t). It is well known that the roots of
the polynomial f(t, x) can be expressed as power series in
bar(N)[[t]].
We embed bar(N) in an unramified
p-adic extension.
The third return value is a structure containing
information about the computation that can be used to compute the
roots of f to arbitrary precision. This can be used for example
in GaloisSubgroup to compute arbitrary subfields
of the splitting field.
The required precision increases linearly with the index of the
subgroups, which are passed traversing the subgroup lattice. Therefore
computations may slow down considerably for higher degrees and large
indices. This expense can be reduced by setting ShortOK to
true, in which case a descent using only the short
cosets [Els14] will be considered as reliable as a descent
using all cosets.
The default version employs series computations over either
unramified p-adic fields (k=Q) or finite fields (k=Fq).
The prime polynomial is determined during a
Galois group computation in such a way that f is squarefree modulo
p.
The prime to use for splitting field computations can be given via the parameter
Prime. The method of choosing primes for splitting field computations can
be given by the parameter NextPrime. If set, the Prime parameter
must be a prime polynomial or a prime ideal when f is over an algebraic
function field. In characteristic 0 a tuple of a prime
polynomial and a prime integer can be given.
If the Prime given ramifies in the extensions defined by f then an
unramfied one larger than that given will be chosen.
An indication of how much effort
the computation should make to prove the results can be provided by altering
the parameter ProofEffort, it should be increased if more effort should
be made.
If Old is set to true, then the old version is called if available.
Since the return values of the new version differ substantially from the
old one, this may be used in old applications.
GaloisGroup(F) : FldFun[FldFun[FldFunRat]] -> GrpPerm, [RngElt], GaloisData
GaloisGroup(F) : FldFun[FldFin] -> GrpPerm, [RngElt], GaloisData
GaloisGroup(F) : FldFun[FldFunRat] -> GrpPerm, [RngElt], GaloisData
GaloisGroup(F) : FldFun[FldRat] -> GrpPerm, [RngElt], GaloisData
Prime: RngElt Default:
NextPrime: UserProgram Default:
ProofEffort: RngIntElt Default: 10
Ring: GaloisData Default:
ShortOK: BoolElt Default: false
Given a function field F defined as an extension of either a rational function
field or a global algebraic function field by one polynomial compute the
Galois group of a normal closure of F.
The prime to use for splitting field computations can be given via the parameter
Prime. The method of choosing primes for splitting field computations can
be given by the parameter NextPrime. If set, the Prime parameter
must be a prime polynomial or a prime ideal when f is over an algebraic
function field. In characteristic 0 a tuple of a prime
polynomial and a prime integer can be given.
If the Prime given ramifies in the extensions defined by f then an
unramfied one larger than that given will be chosen.
An indication of how much effort
the computation should make to prove the results can be provided by altering
the parameter ProofEffort, it should be increased if more effort should
be made. If the parameter ShortOK is set to true then a descent using
only the short cosets [Els14]
will be considered as reliable as a descent using all cosets.
A Galois group computation is shown below.
> k<t>:= FunctionField(Rationals());
> R<x>:= PolynomialRing(k);
> f:= x^15 + (-1875*t^2 - 125)*x^3 + (4500*t^2 + 300)*x^2 +
> (-3600*t^2 - 240)*x + 960*t^2+ 64;
> G, r, S:= GaloisGroup(f);
> TransitiveGroupDescription(G);
1/2[S(5)^3]S(3)
> A := Universe(r);
> AssignNames(~A, ["t"]);
> A;
Power series ring in t over Unramified extension
defined by the polynomial (1 + O(191^20))*x^4 +
O(191^20)*x^3 + (7 + O(191^20))*x^2 + (100 +
O(191^20))*x + 19 + O(191^20)
over Unramified extension defined by the
polynomial (1 + O(191^20))*x + 190 + O(191^20)
over pAdicField(191)
> r[1];
-49 + O(191) - (39 + O(191))*t + O(t^2)
> S;
GaloisData of type Q(t)
> TransitiveGroupIdentification(G);
99 15
Some examples for polynomials over rational function fields over finite fields.
> k<x>:= FunctionField(GF(1009));
> R<y>:= PolynomialRing(k);
> f:= y^10 + (989*x^4 + 20*x^3 + 989*x^2 + 20*x + 989)*y^8 + (70*x^8 +
> 869*x^7 + 310*x^6 + 529*x^5 + 600*x^4 + 479*x^3 + 460*x^2 + 719*x +
> 120)*y^6 + (909*x^12 + 300*x^11 + 409*x^10 + 1000*x^9 + 393*x^8 +
> 657*x^7 + 895*x^6 + 764*x^5 + 420*x^4 + 973*x^3 + 177*x^2 + 166*x +
> 784)*y^4 + (65*x^16 + 749*x^15 + 350*x^14 + 909*x^13 + 484*x^12 +
> 452*x^11 + 115*x^10 + 923*x^9 + 541*x^8 + 272*x^7 + 637*x^6 + 314*x^5 +
> 724*x^4 + 490*x^3 + 948*x^2 + 99*x + 90)*y^2 + 993*x^20 + 80*x^19 +
> 969*x^18 + 569*x^17 + 895*x^16 + 101*x^15 + 742*x^14 + 587*x^13 +
> 55*x^12+ 437*x^11 + 97*x^10 + 976*x^9 + 62*x^8 + 171*x^7 + 930*x^6 +
> 604*x^5 + 698*x^4 + 60*x^3 + 60*x^2 + 1004*x + 1008;
> G, r, p:= GaloisGroup(f);
> t1, t2:= TransitiveGroupIdentification(G);
> t1;
1
> t2;
10
And a second one.
> k<t>:= FunctionField(GF(7));
> R<x>:= PolynomialRing(k);
> f:= x^12 + x^10 + x^8 + (6*t^2 + 3)*x^6 + (4*t^4 + 6*t^2 + 1)*x^4 +
> (5*t^4 + t^2)*x^2 + 2*t^4;
> G, r, p:= GaloisGroup(f);
> G;
Permutation group G acting on a set of cardinality 12
Order = 24 = 2^3 * 3
(1, 5, 4, 7, 11, 10)(2, 6, 3, 8, 12, 9)
(3, 10)(4, 9)(5, 12)(6, 11)
> A := Universe(r);
> AssignNames(~A, ["t"]);
> _<w> := CoefficientRing(Universe(r));
> _<u> := CoefficientField(Parent(w));
> r;
[
(3*u + 2)*w^5 + (u + 5)*w^4 + (5*u + 6)*w^3 + (4*u + 2)*w^2 + (5*u + 4)*w +
3*u + 4 + ((6*u + 1)*w^5 + 6*w^4 + (3*u + 4)*w^3 + (u + 2)*w^2 + (3*u +
3)*w + (3*u + 2))*t + ((5*u + 2)*w^4 + (2*u + 1)*w^3 + (u + 1)*w^2 +
(3*u + 1)*w + (3*u + 3))*t^2 + ((5*u + 1)*w^5 + 3*u*w^4 + 3*u*w^3 + (3*u
+ 6)*w^2 + (4*u + 4)*w + (5*u + 4))*t^3 + O(t^4),
(3*u + 2)*w^5 + (6*u + 2)*w^4 + (5*u + 6)*w^3 + (3*u + 5)*w^2 + (5*u + 4)*w
+ 4*u + 3 + ((6*u + 1)*w^5 + w^4 + (3*u + 4)*w^3 + (6*u + 5)*w^2 + (3*u
+ 3)*w + (4*u + 5))*t + ((2*u + 5)*w^4 + (2*u + 1)*w^3 + (6*u + 6)*w^2 +
(3*u + 1)*w + (4*u + 4))*t^2 + ((5*u + 1)*w^5 + 4*u*w^4 + 3*u*w^3 + (4*u
+ 1)*w^2 + (4*u + 4)*w + (2*u + 3))*t^3 + O(t^4),
(2*u + 6)*w^5 + (2*u + 3)*w^4 + (2*u + 1)*w^3 + (2*u + 1)*w^2 + (4*u + 6)*w
+ 3*u + 4 + ((4*u + 3)*w^5 + 5*w^4 + (4*u + 3)*w^3 + (4*u + 1)*w^2 + (u
+ 1)*w + (3*u + 2))*t + ((3*u + 4)*w^4 + (5*u + 6)*w^3 + (4*u + 4)*w^2 +
(u + 5)*w + (3*u + 3))*t^2 + ((u + 3)*w^5 + 6*u*w^4 + 4*u*w^3 + (5*u +
3)*w^2 + (6*u + 6)*w + (5*u + 4))*t^3 + O(t^4),
(2*u + 6)*w^5 + (5*u + 4)*w^4 + (2*u + 1)*w^3 + (5*u + 6)*w^2 + (4*u + 6)*w
+ 4*u + 3 + ((4*u + 3)*w^5 + 2*w^4 + (4*u + 3)*w^3 + (3*u + 6)*w^2 + (u
+ 1)*w + (4*u + 5))*t + ((4*u + 3)*w^4 + (5*u + 6)*w^3 + (3*u + 3)*w^2 +
(u + 5)*w + (4*u + 4))*t^2 + ((u + 3)*w^5 + u*w^4 + 4*u*w^3 + (2*u +
4)*w^2 + (6*u + 6)*w + (2*u + 3))*t^3 + O(t^4),
(6*u + 4)*w^5 + (3*u + 1)*w^4 + (5*u + 6)*w^3 + (6*u + 3)*w^2 + (6*u + 2)*w
+ 4*u + 3 + ((5*u + 2)*w^5 + 4*w^4 + (3*u + 4)*w^3 + (5*u + 3)*w^2 +
(5*u + 5)*w + (4*u + 5))*t + ((u + 6)*w^4 + (2*u + 1)*w^3 + (5*u +
5)*w^2 + (5*u + 4)*w + (4*u + 4))*t^2 + ((3*u + 2)*w^5 + 2*u*w^4 +
3*u*w^3 + (u + 2)*w^2 + (2*u + 2)*w + (2*u + 3))*t^3 + O(t^4),
(6*u + 4)*w^5 + (4*u + 6)*w^4 + (5*u + 6)*w^3 + (u + 4)*w^2 + (6*u + 2)*w +
3*u + 4 + ((5*u + 2)*w^5 + 3*w^4 + (3*u + 4)*w^3 + (2*u + 4)*w^2 + (5*u
+ 5)*w + (3*u + 2))*t + ((6*u + 1)*w^4 + (2*u + 1)*w^3 + (2*u + 2)*w^2 +
(5*u + 4)*w + (3*u + 3))*t^2 + ((3*u + 2)*w^5 + 5*u*w^4 + 3*u*w^3 + (6*u
+ 5)*w^2 + (2*u + 2)*w + (5*u + 4))*t^3 + O(t^4),
(4*u + 5)*w^5 + (u + 5)*w^4 + (2*u + 1)*w^3 + (4*u + 2)*w^2 + (2*u + 3)*w +
3*u + 4 + ((u + 6)*w^5 + 6*w^4 + (4*u + 3)*w^3 + (u + 2)*w^2 + (4*u +
4)*w + (3*u + 2))*t + ((5*u + 2)*w^4 + (5*u + 6)*w^3 + (u + 1)*w^2 +
(4*u + 6)*w + (3*u + 3))*t^2 + ((2*u + 6)*w^5 + 3*u*w^4 + 4*u*w^3 + (3*u
+ 6)*w^2 + (3*u + 3)*w + (5*u + 4))*t^3 + O(t^4),
(4*u + 5)*w^5 + (6*u + 2)*w^4 + (2*u + 1)*w^3 + (3*u + 5)*w^2 + (2*u + 3)*w
+ 4*u + 3 + ((u + 6)*w^5 + w^4 + (4*u + 3)*w^3 + (6*u + 5)*w^2 + (4*u +
4)*w + (4*u + 5))*t + ((2*u + 5)*w^4 + (5*u + 6)*w^3 + (6*u + 6)*w^2 +
(4*u + 6)*w + (4*u + 4))*t^2 + ((2*u + 6)*w^5 + 4*u*w^4 + 4*u*w^3 + (4*u
+ 1)*w^2 + (3*u + 3)*w + (2*u + 3))*t^3 + O(t^4),
(5*u + 1)*w^5 + (2*u + 3)*w^4 + (5*u + 6)*w^3 + (2*u + 1)*w^2 + (3*u + 1)*w
+ 3*u + 4 + ((3*u + 4)*w^5 + 5*w^4 + (3*u + 4)*w^3 + (4*u + 1)*w^2 +
(6*u + 6)*w + (3*u + 2))*t + ((3*u + 4)*w^4 + (2*u + 1)*w^3 + (4*u +
4)*w^2 + (6*u + 2)*w + (3*u + 3))*t^2 + ((6*u + 4)*w^5 + 6*u*w^4 +
3*u*w^3 + (5*u + 3)*w^2 + (u + 1)*w + (5*u + 4))*t^3 + O(t^4),
(5*u + 1)*w^5 + (5*u + 4)*w^4 + (5*u + 6)*w^3 + (5*u + 6)*w^2 + (3*u + 1)*w
+ 4*u + 3 + ((3*u + 4)*w^5 + 2*w^4 + (3*u + 4)*w^3 + (3*u + 6)*w^2 +
(6*u + 6)*w + (4*u + 5))*t + ((4*u + 3)*w^4 + (2*u + 1)*w^3 + (3*u +
3)*w^2 + (6*u + 2)*w + (4*u + 4))*t^2 + ((6*u + 4)*w^5 + u*w^4 + 3*u*w^3
+ (2*u + 4)*w^2 + (u + 1)*w + (2*u + 3))*t^3 + O(t^4),
(u + 3)*w^5 + (3*u + 1)*w^4 + (2*u + 1)*w^3 + (6*u + 3)*w^2 + (u + 5)*w +
4*u + 3 + ((2*u + 5)*w^5 + 4*w^4 + (4*u + 3)*w^3 + (5*u + 3)*w^2 + (2*u
+ 2)*w + (4*u + 5))*t + ((u + 6)*w^4 + (5*u + 6)*w^3 + (5*u + 5)*w^2 +
(2*u + 3)*w + (4*u + 4))*t^2 + ((4*u + 5)*w^5 + 2*u*w^4 + 4*u*w^3 + (u +
2)*w^2 + (5*u + 5)*w + (2*u + 3))*t^3 + O(t^4),
(u + 3)*w^5 + (4*u + 6)*w^4 + (2*u + 1)*w^3 + (u + 4)*w^2 + (u + 5)*w + 3*u
+ 4 + ((2*u + 5)*w^5 + 3*w^4 + (4*u + 3)*w^3 + (2*u + 4)*w^2 + (2*u +
2)*w + (3*u + 2))*t + ((6*u + 1)*w^4 + (5*u + 6)*w^3 + (2*u + 2)*w^2 +
(2*u + 3)*w + (3*u + 3))*t^2 + ((4*u + 5)*w^5 + 5*u*w^4 + 4*u*w^3 + (6*u
+ 5)*w^2 + (5*u + 5)*w + (5*u + 4))*t^3 + O(t^4)
]
> p;
GaloisData of type F_q(t)
> p`Prime;
t^2 + t + 4
> p`Ring;
Power series ring in t over GF(7^12)
Given a polynomial f over Q(t) return the Galois group of f as a polynomial
over C(t) and a polynomial defining the fixed field of that group.
For information about the algorithm involved see [Sut18].
Given a polynomial f over Q(t)
this intrinsic provides a finite set and a sequence of curves such that the
rational points on the curves together with the finite set determine the
set of exceptions to Hilbert's Irreducibility Theorem for f.
For more information see [KS21].
We show a computation of a geometric Galois group
> Qt<t> := FunctionField(Rationals());
> Qtx<x> := PolynomialRing(Qt);
> f := x^9 - 3*x^7 + (-6*t - 6)*x^6 + 3*x^5 + (12*t - 6)*x^4 +
> (12*t^2 - 84*t + 11)*x^3 + (-6*t - 6)*x^2 + (-12*t^2 + 12*t + 24)*x -
> 8*t^3 - 24*t^2 - 24*t - 6;
> time GeometricGaloisGroup(f);
Permutation group acting on a set of cardinality 9
Order = 6 = 2 * 3
(2, 9)(3, 8)(4, 7)
(1, 9, 2)(3, 8, 6)(4, 7, 5)
x^6 + 78732
GaloisData of type Q(t)
and one of the exceptions and curves involved in making Hilbert's Irreducibility
Theorem explicit.
> f := x^6 + t^6 - 1;
> HilbertIrreducibilityCurves(f);
{ -1, 1 }
[
<Curve over Rational Field defined by
x^2 + 6*x + 9*t^6, Permutation group acting on a set of cardinality 6
Order = 6 = 2 * 3
(2, 5)(3, 4)
(1, 5, 2)(3, 4, 6)>,
<Curve over Rational Field defined by
x^2 + 1728*t^12 - 3456*t^6 + 1728, Permutation group acting on a set of
cardinality 6
Order = 6 = 2 * 3
(1, 3, 2, 6, 5, 4)
(1, 5, 2)(3, 4, 6)>,
<Curve over Rational Field defined by
x^2 - 62208*t^30 + 311040*t^24 - 622080*t^18 + 622080*t^12 - 311040*t^6 +
62208, Permutation group acting on a set of cardinality 6
Order = 6 = 2 * 3
(1, 3)(2, 4)(5, 6)
(1, 5, 2)(3, 4, 6)>,
<Curve over Rational Field defined by
x^3 + 12*x^2 + 48*x - 8*t^6 + 72, Permutation group acting on a set of
cardinality 6
Order = 4 = 2^2
(2, 5)(3, 4)
(1, 6)(2, 4)(3, 5)>
]
The Galois group of a polynomial can be used to compute splitting fields of the
polynomial. Magma contains intrinsics which compute a minimal degree splitting field
over the coefficient field as well as a splitting field consisting of radical extensions.
Galois: Tup<GrpPerm, [RngElt], GaloisData> Default:
Roots: BoolElt Default: true
AllAuto: BoolElt Default: false
Stab: BoolElt Default: true
Chain: [GrpPerm] Default: false
Inv: [RngSLPolElt] Default: false
Name: MonStgElt Default: false
For a polynomial f over Fq[t]
this function computes the splitting field of f as a tower of
fields. The various parameters can be used to force certain
subfield towers and/or compute additional data. By default
Stab is set to true, which means that the splitting field
will be the tower corresponding to the chain of stabilizers
of {1}, {1, 2}, ..., {1, ..., n}.
Also by default Roots is set to true, which means that the roots
of f are expressed as elements of the splitting field.
If Roots is set to false, only the field is computed and returned.
The third return value will be the Galois group, the optional fourth value
the automorphisms.
If the parameter Galois is used, it should contain a list or triplet
containing the output of GaloisGroup(f);.
If Chain is set to a sequence of subgroups, this chain is
used to compute a subfield tower. In this case the first elements
must be G, the full Galois group. If Chain is used, Inv
can be used to provide the invariants as well.
If AllAuto is set to true, the full automorphism group
of the splitting field is computed as a sequence of sequences giving the
all the roots of the relative polynomials.
If Name is given, it should be set to a string. In this case
the primitive element of the i-subfield in the tower will be
called Name.i.
We start with a small example, to illustrate some of the parameters and
their influence:
> F<t> := FunctionField(GF(5));
> P<x> := PolynomialRing(F);
> f := x^3-2*t;
> GaloisSplittingField(f);
Algebraic function field defined over Algebraic function field defined over
Univariate rational function field over GF(5) by
x^3 + 2*t by
$.1^2 + $.1*$.1 + $.1^2
[
4*$.1,
4*$.1,
$.1 + $.1
]
Symmetric group acting on a set of cardinality 3
Order = 6 = 2 * 3
(1, 2, 3)
(1, 2)
> K, R, G := $1;
> K:Maximal;
K
|
| $.1^2 + $.1*$.1 + $.1^2
|
$2
|
| x^3 + 2*t
|
Univariate rational function field over GF(5)
Variables: t
> [x^3 : x in R];
[
2*t,
2*t,
2*t
]
The fact that by default all generators are called $.1
makes this hard to read, so let us assign other names:
> GaloisSplittingField(f:Name := "K");
Algebraic function field defined over Algebraic function field defined over
Univariate rational function field over GF(5) by
x^3 + 2*t by
K1^2 + K2*K1 + K2^2
[
4*K2,
4*K1,
K1 + K2
]
Symmetric group G acting on a set of cardinality 3
Order = 6 = 2 * 3
(1, 2, 3)
(1, 2)
> (K where K := $1):Maximal;
K<K1>
|
| K1^2 + K2*K1 + K2^2
|
$2<K2>
|
| x^3 + 2*t
|
Univariate rational function field over GF(5)
Variables: t
So now we can easily see that the splitting field is a relative
quadratic extension of the degree 3 stem field. Now we try a different
subgroup chain:
> G, r, S := GaloisGroup(f);
> GaloisSplittingField(f:Galois := <G, r, S>,
> Chain := CompositionSeries(G), Name := "K", AllAuto);
Algebraic function field defined over Algebraic function field defined over
Univariate rational function field over GF(5) by
x^2 + 3*t^2 by
K1^3 + 2*t
[
4*K1,
(3/t*K2 + 3)*K1,
(2/t*K2 + 3)*K1
]
Symmetric group G acting on a set of cardinality 3
Order = 6 = 2 * 3
(1, 2, 3)
(1, 2)
[
[
4*K2,
K2
],
[
4*K1,
(3/t*K2 + 3)*K1,
(2/t*K2 + 3)*K1
]
]
> (K where K := $1):Maximal;
$1<K1>
|
| K1^3 + 2*t
|
$2<K2>
|
| x^2 + 3*t^2
|
Univariate rational function field over GF(5)
Variables: t
And lastly we show a larger example.
> f := x^6 - t^14*x^4 - t^19*x^2 - t^52;
> G, r, S := GaloisGroup(f); G;
Permutation group G acting on a set of cardinality 6
Order = 24 = 2^3 * 3
(1, 5, 6)(2, 3, 4)
(1, 2)(4, 5)
(1, 5)(2, 4)
(1, 2, 3)(4, 5, 6)
> TransitiveGroupIdentification(G);
7 6
> TransitiveGroupDescription(G);
S_4(6d) = [2^2]S(3)
> time K, R := GaloisSplittingField(f:Name := "K");
Time: 149.700
> K:Maximal;
K<K1>
|
| K1^4 + (K2^2 + 4*t^14)*K1^2 + K2^4 + 4*t^14*K2^2 + 4*t^19
|
$2<K2>
|
| x^6 + 4*t^14*x^4 + 4*t^19*x^2 + 4*t^52
|
Univariate rational function field over GF(5)
Variables: t
For a polynomial f∈Fq[t][x] with solvable Galois group it is well known
that the roots of f can be expressed as nested radicals. On the other hand
no good algorithm is known to achieve this. Here we use the explicit
action of the Galois group of f as a permutation group on the p-adic
roots to compute such a representation.
Prime: RngIntElt Default: false
Name: MonStgElt Default: false
Galois: Tup<GrpPerm, [RngElt], GaloisData> Default:
UseZeta_p: BoolElt Default: false
MaxBound: RngIntElt Default: ∞
SetVerbose("GaloisTower", n): Maximum: 3
For a polynomial f∈Z[t] with solvable Galois group, a
splitting field as a tower of radical extensions is computed together
with algebraic representations of the roots of f as elements
in the splitting field. The third return value contains the non-trivial roots of
unity which are used.
If the parameter Galois is used, it should contain a list or triplet
containing the output of GaloisGroup(f);.
If Prime is used, and Galois is unspecified, the value
of Prime is passed onto the Galois group computation and can
therefore be used to choose the p-adic field.
If set, the Prime parameter
must be a prime polynomial or a prime ideal when f is over an algebraic
function field. In characteristic 0 a tuple of a prime
polynomial and a prime integer can be given.
If the Prime given ramifies in the extensions defined by f then an
unramfied one larger than that given will be chosen.
If UseZeta_p is set to true, then the expression for the
roots of p will contain pure radicals and roots of unity. By default,
if UseZeta_p is false, radical expressions for the roots
of unit necessary will also be computed.
If MaxBound is given, it will be used as an upper bound
for the p-adic precision used internally. Especially when the radical tower
contains many steps, the internally used precision estimates become more and
more pessimistic, thus resulting in larger and larger precision.
If Name is set to some string, the i-th level primitive element
in the tower will be called Name.i.
Let K/F be a function field with cyclic automorphism group of order n
generated by K.1 to a and z be a n-th root of unity in k.
This intrinsic will return a field L isomorphic to K such that
L is a Kummer extension or an Artin--Schreier extension,
i.e. the defining polynomial for L
will be of the form yn - b or yp - y - b for some b in the coefficient
field k of K.
The second returned value contains the roots of f in L while
the third return value contains the roots of unity used.
> F<t> := FunctionField(GF(5));
> P<x> := PolynomialRing(F);
> f := x^6 + (2*t + 3)*x^4 + 3*t*x^3 + (3*t^2 + 1)*x^2 +
> (4*t^2 + 2*t)*x + 4*t^3 + 3*t^2 + 4*t;
> K, R := SolveByRadicals(f:Name := "K.");
> K:Maximal;
K<K.1>
|
| K.1^3 + 3*$.1*K.2 + 4*$.1
|
$2<K.2>
|
| K.2^2 + 2*$.1^2 + 1
|
$3<K.3>
|
| K.3^2 + $.1
|
Univariate rational function field over GF(5^2)
Variables: $.1
> [ Evaluate(f, x) eq 0 : x in R];
[ true, true, true, true, true, true ]
Note that every step in the tower defining K is radical, ie. given
by an equation of type x n - a or x p - x - a in characteristic p.
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|