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, (irreducible if k is Q) 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. 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.
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. 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.
> 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
> 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; 10And 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].
> 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.
> 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: tSo 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: tAnd 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 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 xn - a or xp - x - a in characteristic p.