Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Project: Math 582b
Views: 2495

Constructing Relative Number Fields

William Stein

Jan 13, 2016

Frequently number fields are naturally defined as a tower (or as a compositum of other number fields). First let's consider an extension of number fields. Things work just like before, but you define a second polynomial ring over the first number field.

Let's first define K=Q(2)K=\QQ(\sqrt{2}), then M=K(2+3)M=K(\sqrt{\sqrt{2} + 3}).

R.<x> = QQ[] K.<alpha> = NumberField(x^2 - 2) K
Number Field in alpha with defining polynomial x^2 - 2
# Make a polynomial ring in one variable "y" over K: S.<y> = K[] S
Univariate Polynomial Ring in y over Number Field in alpha with defining polynomial x^2 - 2
# Finally define M: M.<beta> = NumberField(y^2 - (alpha + 3)) M
Number Field in beta with defining polynomial y^2 - alpha - 3 over its base field
beta^2
alpha + 3

Elements of KK will automatically convert into elements of MM. (This is actually really general and complicated, under the hood, and took years of work to do in the right generality. Sage is the biggest and most sophisticated implementation of this sort of "coercion model" functionality.)

alpha.parent()
Number Field in alpha with defining polynomial x^2 - 2
beta.parent()
Number Field in beta with defining polynomial y^2 - alpha - 3 over its base field
(1/5).parent()
Rational Field
1 + alpha + beta + 1/5
beta + alpha + 6/5

Exercise right now: Construct K(1+2+33)K(\sqrt[3]{1 + \sqrt{\sqrt{2} + 3}}) as an extension of MM.

︠184ec9e7-71c4-4357-a917-277f659d20ad︠ ︠b2458d01-c28b-4491-bafe-3627bc5de04f︠ ︠07063ba8-7ff8-4f47-b607-e9271099202ci︠ %md ## Inspiration: Magma The user interface for making number fields in Sage is motivated by how things work in Magma. See, e.g., https://magma.maths.usyd.edu.au/magma/handbook/number_fields and here is an example:

Inspiration: Magma

The user interface for making number fields in Sage is motivated by how things work in Magma.

See, e.g., https://magma.maths.usyd.edu.au/magma/handbook/number_fields

and here is an example:

%magma_free R<x> := PolynomialRing(RationalField()); print R;
Univariate Polynomial Ring in x over Rational Field
%magma R<x> := PolynomialRing(RationalField()); print R;
Univariate Polynomial Ring in x over Rational Field
%magma K<alpha> := NumberField(x^2 - 2); K
Number Field with defining polynomial x^2 - 2 over the Rational Field
%magma S<y> := PolynomialRing(K); S
Univariate Polynomial Ring in y over K
%magma M<beta> := NumberField(y^2 - (alpha + 3)); print M
Number Field with defining polynomial y^2 - alpha - 3 over K
%magma print (beta^2)
alpha + 3
%magma // Of course this *does* work fine in Magma: print 1 + alpha + beta + 1/5
beta + 1/5*(5*alpha + 6)

Compositums

You can also make number fields as compositums of existing number fields:

K.<a> = NumberField(x^2 + 2); K M.<b> = NumberField(x^2 - 3); M
Number Field in a with defining polynomial x^2 + 2 Number Field in b with defining polynomial x^2 - 3
K.composite_fields(M)
[Number Field in ab with defining polynomial x^4 - 2*x^2 + 25]

Composite fields outputs a list because there can be more than one composite of fields, in case there are multiple embeddings of the field into Q\overline{\QQ}.

Exercise right now: come up with an example in which K.composite_fields(M) is a list of length bigger than 1?

# do it here ︠2d753a56-8534-4562-b57d-f0f457251357s︠ K.<a> = NumberField(x^3 - 2 ); K M.<b> = NumberField(x^3 - 2); M v = K.composite_fields(M); v
Number Field in a with defining polynomial x^3 - 2 Number Field in b with defining polynomial x^3 - 2 [Number Field in a with defining polynomial x^3 - 2, Number Field in ab with defining polynomial x^6 + 40*x^3 + 1372]
L = v[1]
K.embeddings(L)
[ Ring morphism: From: Number Field in a with defining polynomial x^3 - 2 To: Number Field in ab with defining polynomial x^6 + 40*x^3 + 1372 Defn: a |--> 1/84*ab^4 + 13/42*ab, Ring morphism: From: Number Field in a with defining polynomial x^3 - 2 To: Number Field in ab with defining polynomial x^6 + 40*x^3 + 1372 Defn: a |--> -1/252*ab^4 - 55/126*ab, Ring morphism: From: Number Field in a with defining polynomial x^3 - 2 To: Number Field in ab with defining polynomial x^6 + 40*x^3 + 1372 Defn: a |--> -1/126*ab^4 + 8/63*ab ]
︠79a6fd7d-b1da-473f-8e49-8b710f7a2e54︠ ︠1fc32204-ec13-40fb-a09c-7c33ca979fd6i︠ %md You can also just give several polynomials to construct a choice of compositum:

You can also just give several polynomials to construct a choice of compositum:

K.<a,b> = NumberField([x^2 + 2, x^3 - 3]) K
Number Field in a with defining polynomial x^2 + 2 over its base field
K.base_field()
Number Field in b with defining polynomial x^3 - 3
K.base_field().base_field()
Rational Field
K.base_field().base_field().base_field() # seems inconsistent...
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 905, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> File "sage/structure/parent.pyx", line 855, in sage.structure.parent.Parent.__getattr__ (/projects/sage/sage-6.10/src/build/cythonized/sage/structure/parent.c:8043) attr = getattr_from_other_class(self, self._category.parent_class, name) File "sage/structure/misc.pyx", line 253, in sage.structure.misc.getattr_from_other_class (/projects/sage/sage-6.10/src/build/cythonized/sage/structure/misc.c:1667) raise dummy_attribute_error AttributeError: 'RationalField_with_category' object has no attribute 'base_field'
a^2
-2
b^3
3
(a+b)^100
(-3520419357605256583436541484192932195120000*b^2 - 13793707522261480307097285824046174949638728*b + 27216736103043164923031546323448520716236332)*a - 18492393916443261636690113694468728419127532*b^2 + 19553749269158138696140852235900826362941443*b + 10264342953753048971333126871551339864877604

Next up:

  • Absolute versus relative extensions

  • Finding an optimized representation for a number field

︠75cc4d78-73d9-478b-85ee-3803d6863024︠