CurrentModule = Oscar
CollapsedDocStrings = true
DocTestSetup = Oscar.doctestsetup()
The abelian closure
the union of all cyclotomic extensions.
Here for
abelian_closure(::QQField)
Given the abelian closure, the generator can be recovered as follows:
gen(::QQAbField{AbsSimpleNumField})
atlas_irrationality
atlas_description
OSCAR assumes a natural embedding of the field K produced by
K, z = abelian_closure(QQ) into F = algebraic_closure(QQ),
which is given by mapping the n-th root of unity returned by z(n)
to root_of_unity(F, n).
Both roots of unity correspond to the complex number
We can convert elements of K to elements of F as follows.
julia> K, z = abelian_closure(QQ)
(Abelian closure of rational field, Generator of abelian closure of rational field)
julia> F = algebraic_closure(QQ)
Algebraic closure of rational field
julia> x = z(5)
zeta(5)
julia> y = F(x)
{a4: 0.309017 + 0.951057*im}
julia> y^5
{a1: 1.00000}
Real elements of K can be compared with < and >.
julia> a = x + x^4
-zeta(5)^3 - zeta(5)^2 - 1
julia> a > 0
true
The n-th primitive root of the abelian closure of zeta(n).
The printing can be manipulated using the following functions:
gen(::QQAbField, ::String)
set_variable!(::QQAbField, ::String)
get_variable(::QQAbField)
julia> K, z = abelian_closure(QQ);
julia> z(4)
zeta(4)
julia> ζ = gen(K, "ζ")
Generator of abelian closure of QQ
julia> ζ(5) + ζ(3)
ζ(15)^5 + ζ(15)^3
julia> z(4)
"ζ"
julia> set_variable!(K, "zeta");
julia> z(4)
zeta(4)
reduce(val::QQAbFieldElem, F::FinField)