Subfields

This section contains functions for the computation of all subfields of any number field or all subfields of a given degree of a simple absolute algebraic field or a simple relative extension.

These computations are independent of the computation of the Galois groups, but similarly there is no limit on the degrees of the field.

The algorithms used are Klüner's method as presented in [Klü95], [Klü97], [KP97], [Klü98] and the newer method of Klüners, van Hoeij and Novocin [vHKN11].

Contents

Subfields(K, n) : FldAlg, RngIntElt -> [ < FldAlg, Hom > ]
    SetVerbose("Subfields", n):         Maximum: 4
Given a simple absolute algebraic field or a simple relative extension K and an integer n greater than 1, this function returns a sequence of pairs (2-tuples) containing the subfields of K of degree n together with the embedding homomorphisms of each subfield into K. It is possible that the sequence contains isomorphic fields, but the embeddings will be distinct in such a situation.
Subfields(K) : FldAlg -> [ < FldAlg, Hom > ]
    Al: MonStgElt                       Default: "Default"
    Current: BoolElt                    Default: false
    Proof: RngIntElt                    Default: 1
    SetVerbose("Subfields", n):         Maximum: 4
Given an algebraic field K, this function returns a sequence of pairs (2-tuples) containing the subfields of K (except Q) together with the embedding homomorphisms of each subfield into K. It is possible that the sequence contains isomorphic fields.

For fields K which are extensions of an algebraic number field the more recent algorithm developed by Kl{üners and van Hoeij [vHKN11] is used. For fields K which are extensions of Q, this algorithm can be selected by setting the parameter Al to "KluenersvanHoeij" or may be chosen by "Default" as the optimal algorithm. By default, the "Klueners" algorithm is chosen if the defining polynomial of K factors into large degree factors (with respect to the degree of K) over the residue field of some prime or the coefficients of the defining polynomial are large, otherwise "KluenersvanHoeij" is used which is optimal when the defining polynomial only has small degree factors (with respect to the degree of K) over the residue fields of some number of primes, that is, K has a large number of subfields.

The Subfield Lattice

Subfields of number fields can also be retrieved in the form of a lattice from which additional information can be discovered.

Representative(L) : SubFldLat -> SubFldLatElt
Rep(L) : SubFldLat -> SubFldLatElt
SubfieldLattice(K) : FldNum -> SubFldLat
    SetVerbose("Subfields", n):         Maximum: 4
The lattice of subfields of an absolute number field K.
# L : SubFldLat -> RngIntElt
The number of fields in the lattice L.
Bottom(L) : SubFldLat -> SubFldLatElt
The bottom element of the subfield lattice L (this corresponds to Q).
Top(L) : SubFldLat -> SubFldLatElt
The top element of the subfield lattice L (this corresponds to the original number field).
Random(L) : SubFldLat -> SubFldLatElt
A random element of the subfield lattice L.
L ! n : SubFldLat, RngIntElt -> SubFldLatElt
L[n] : SubFldLat, RngIntElt -> SubFldLatElt
The n-th element of the subfield lattice L.
NumberField(e) : SubFldLatElt -> FldNum
The number field corresponding to the given subfield lattice element e.
EmbeddingMap(e) : SubFldLatElt -> Map
The mapping from NumberField(e) into the top number field of the subfield lattice.
Degree(e) : SubFldLatElt -> RngIntElt
The (absolute) degree of the number field corresponding to the subfield lattice element e.
e eq f : SubFldLatElt, SubFldLatElt -> BoolElt
Returns true if and only if the subfield lattice elements e and f are equal.
e subset f : SubFldLatElt, SubFldLatElt -> BoolElt
Returns true if and only if e is a subfield of f.
e * f : SubFldLatElt, SubFldLatElt -> SubFldLatElt
The smallest field containing both e and f.
e meet f : SubFldLatElt, SubFldLatElt -> SubFldLatElt
The intersection of e and f. This is the largest field common to both of them.
&meet S : [ SubFldLatElt ] -> SubFldLatElt
The intersection of the subfields in the sequence S.
MaximalSubfields(e) : SubFldLatElt -> [ SubFldLatElt ]
The sequence of maximal subfield lattice elements contained in e.
MinimalOverfields(e) : SubFldLatElt -> [ SubFldLatElt ]
The sequence of minimal subfield lattice elements containing e.

Example RngOrdGal_SubfieldLattice (H40E8)

A subfield lattice is shown.
> Zx<x> := PolynomialRing(Integers());
> K<a> := NumberField(x^8 - x^4 + 1);
> L := SubfieldLattice(K);
> L;
Subfield Lattice of K
[1] Rational Field
[2] Subfield generated by a root of x^2 - 4*x + 1
[3] Subfield generated by a root of x^2 - 26*x + 241
[4] Subfield generated by a root of x^2 - 10*x + 241
[5] Subfield generated by a root of x^2 + 1
[6] Subfield generated by a root of x^2 - 10*x + 1
[7] Subfield generated by a root of x^2 - 6*x + 1
[8] Subfield generated by a root of x^2 + x + 1
[9] Subfield generated by a root of x^4 + 4*x^2 + 1
[10] Subfield generated by a root of x^4 - x^2 + 1
[11] Subfield generated by a root of x^4 - 8*x^3 + 20*x^2 - 16*x + 1
[12] Subfield generated by a root of x^4 - 4*x^3 + 8*x^2 - 4*x + 1
[13] Subfield generated by a root of x^4 - 6*x^3 + 13*x^2 - 6*x + 1
[14] Subfield generated by a root of x^4 - 4*x^3 + 8*x^2 + 4*x + 1
[15] Subfield generated by a root of x^4 - 2*x^3 + 5*x^2 + 2*x + 1
[16] Subfield generated by a root of x^8 - x^4 + 1
Observe that subfields 2, 5 and 8 give the square roots of 2, -1 and 3, respectively. Since these are incommensurate radicals the field generated by them has degree 8 and so must be isomorphic to K.
> K2 := AbsoluteField( NumberField([ x^2 + 1, x^2 - 2, x^2 - 3 ]));
> K2;
Number Field with defining polynomial x^8 - 16*x^6 + 88*x^4 + 192*x^2 + 144
over the Rational Field
> IsIsomorphic(K2, K);
true
In fact, K is just a "better" version of K2.
> OptimizedRepresentation(K2);
Number Field with defining polynomial x^8 - x^4 + 1 over the Rational Field
Mapping from: FldNum: K2 to Number Field with defining polynomial x^8 - x^4 + 1
over the Rational Field
V2.28, 13 July 2023