# Is K = QQ[polynomial_root] the same as K.<a> = QQ.extension(polynomial)?

I have tested it in a few cases and it seems to be the same, however the following piece of code shows they are not equal :

sage: f
x^3 + 2*x + 5
sage: f.roots(QQbar)
[(-1.328268855668609?, 1),
(0.664134427834305? - 1.822971095411114?*I, 1),
(0.664134427834305? + 1.822971095411114?*I, 1)]
sage: alpha = f.roots(QQbar, multiplicities=False)
sage: K = QQ[alpha]
sage: K
Number Field in a with defining polynomial x^3 + 2*x + 5
sage: H.<a> = QQ.extension(f)
sage: H
Number Field in a with defining polynomial x^3 + 2*x + 5
sage: K['x'](f).factor()
(x - a) * (x^2 + a*x + a^2 + 2)
sage: H['x'](f).factor()
(x - a) * (x^2 + a*x + a^2 + 2)
sage: H == K
False
sage: H.gen()  ==  K.gen()
False
sage: type(K)
<class 'sage.rings.number_field.number_field.NumberField_absolute_with_category'>
sage: type(H)
<class 'sage.rings.number_field.number_field.NumberField_absolute_with_category'>
sage: H.categories() == K.categories()
True


Moreover, I would like to suggest adding this special use of brackets ( such as QQ[polynomial_root] ) to the official doc as long as it is missing.

edit retag close merge delete

Sort by » oldest newest most voted

The two fields are distinct because K is constructed with an embedding into the complex numbers and H isn't

sage: CC.coerce_map_from(K)

Composite map:
From: Number Field in a with defining polynomial x^3 + 2*x + 5
To:   Complex Field with 53 bits of precision
Defn:   Generic morphism:
From: Number Field in a with defining polynomial x^3 + 2*x + 5
To:   Real Lazy Field
Defn: a -> -1.328268855668609?
then
Conversion via _mpfr_ method map:
From: Real Lazy Field
To:   Real Field with 53 bits of precision
then
Natural map:
From: Real Field with 53 bits of precision
To:   Complex Field with 53 bits of precision
sage: CC.coerce_map_from(H) is None
True

more