Introduction
This chapter deals with number fields and orders there of. We follow the common terminology and conventions as e.g. used in [2], [1], [3] or [4].
If
Orders of absolute number fields
Assume that
is the basis matrix of
Orders of relative number fields
Orders in non-absolute number fields, that is, relative extensions, are represented differently. Let
In short,
Examples
Usually, to create an order, one starts with a field (or a polynomial):
julia> Qx, x = polynomial_ring(QQ, "x");
julia> K, a = number_field(x^2 - 10, "a");
julia> E = equation_order(K)
Maximal order of Number field of degree 2 over QQ
with basis AbsSimpleNumFieldElem[1, a]
julia> Z_K = maximal_order(K)
Maximal order of Number field of degree 2 over QQ
with basis AbsSimpleNumFieldElem[1, a]
julia> conductor(E)
<no 2-elts present>
basis_matrix
[1 0; 0 1]
julia> E == Z_K
true
Once orders are created, we can play with elements and ideals:
julia> lp = prime_decomposition(Z_K, 2)
1-element Vector{Tuple{AbsSimpleNumFieldOrderIdeal, Int64}}:
(<2, a>
Norm: 2
Minimum: 2
two normal wrt: 2, 2)
julia> p = lp[1][1]
<2, a>
Norm: 2
Minimum: 2
two normal wrt: 2
julia> is_principal(p)
false
julia> fl, alpha = is_principal_with_data(p^2)
(true, 2)
julia> norm(alpha)
4
It is possible to work with residue fields as well:
julia> Fp, mFp = residue_field(Z_K, p)
(Prime field of characteristic 2, Map: maximal order of Number field of degree 2 over QQ
with basis AbsSimpleNumFieldElem[1, a] -> GF(2))
julia> [ mFp(x) for x = basis(Z_K)]
2-element Vector{FqFieldElem}:
1
0