Orders
Orders, that is, unitary subrings that are free
Among all orders in a fixed field, there is a unique maximal order, called the maximal order, or ring of integers of the number field. It is well known that this is the only order that is a Dedekind domain, hence has a rich ideal structure as well. The maximal order is also the integral closure of
Creation and basic properties
order Method
order(a::Vector{AbsSimpleNumFieldElem}; check::Bool = true, cached::Bool = true, isbasis::Bool = false) -> AbsSimpleNumFieldOrder
order(K::AbsSimpleNumField, a::Vector{AbsSimpleNumFieldElem}; check::Bool = true, cached::Bool = true, isbasis::Bool = false) -> AbsSimpleNumFieldOrderReturns the order generated by check is set, it is checked whether isbasis is set, then elements are assumed to form a cached is set, then the constructed order is cached for future use.
order Method
order(K::AbsSimpleNumField, A::QQMatrix; check::Bool = true) -> AbsSimpleNumFieldOrderReturns the order which has basis matrix check is set, it is checked whether
order(K::AbsSimpleNumField, A::QQMatrix; check::Bool = true) -> AbsSimpleNumFieldOrderReturns the order which has basis matrix check is set, it is checked whether
equation_order Method
equation_order(K::number_field) -> NumFieldOrder
equation_order(K::number_field) -> NumFieldOrderReturns the equation order of the number field
maximal_order Method
maximal_order(K::NumField{QQFieldElem}; discriminant::ZZRingElem, ramified_primes::Vector{ZZRingElem}) -> AbsNumFieldOrderReturns the maximal order of
Example
julia> Qx, x = QQ["x"];
julia> K, a = number_field(x^3 + 2, "a");
julia> O = maximal_order(K);maximal_order Method
maximal_order(O::AbsNumFieldOrder; index_divisors::Vector{ZZRingElem}, discriminant::ZZRingElem, ramified_primes::Vector{ZZRingElem}) -> AbsNumFieldOrderReturns the maximal order of the number field that contains
maximal_order(O::AlgAssAbsOrd)Given an order
maximal_order(A::AbstractAssociativeAlgebra{QQFieldElem}) -> AlgAssAbsOrdReturns a maximal order of
maximal_order(O::AlgAssRelOrd) -> AlgAssRelOrdReturns a maximal order of the algebra of
lll Method
lll(M::AbsNumFieldOrder) -> AbsNumFieldOrderThe same order, but with the basis now being LLL reduced wrt. the Minkowski metric.
sourceany_order Method
any_order(K::number_field)Return some order in
Example
julia> Qx, x = polynomial_ring(QQ, :x);
julia> K, a = number_field(x^2 - 2, :a; cached = false);
julia> O = equation_order(K)
Order
of number field with defining polynomial x^2 - 2
over rational field
with Z-basis [1, a]parent Method
parent(O::AbsNumFieldOrder) -> AbsNumFieldOrderSetReturns the parent of
signature Method
signature(O::NumFieldOrder) -> Tuple{Int, Int}Returns the signature of the ambient number field of
basis Method
basis(O::AbsNumFieldOrder) -> Vector{AbsNumFieldOrderElem}Returns the
basis(I::AbsNumFieldOrderFractionalIdeal) -> Vector{AbsSimpleNumFieldElem}Returns the
Return the default basis.
If (xᵢ)ᵢ is the basis of the distinguished cyclic subfield, and π the generating element, this basis is colex ordered (xᵢ⋅πʲ)ᵢⱼ.
sourcelll_basis Method
lll_basis(M::NumFieldOrder) -> Vector{NumFieldElem}A basis for
basis Method
basis(O::AbsSimpleNumFieldOrder, K::AbsSimpleNumField) -> Vector{AbsSimpleNumFieldElem}Returns the
pseudo_basis Method
pseudo_basis(O::RelNumFieldOrder{T, S}) -> Vector{Tuple{NumFieldElem{T}, S}}Returns the pseudo-basis of
basis_pmatrix Method
basis_pmatrix(O::RelNumFieldOrder) -> PMatReturns the basis pseudo-matrix of
basis_nf Method
basis_nf(O::RelNumFieldOrder) -> Vector{NumFieldElem}Returns the elements of the pseudo-basis of
inv_coeff_ideals Method
inv_coeff_ideals(O::RelNumFieldOrder{T, S}) -> Vector{S}Returns the inverses of the coefficient ideals of the pseudo basis of
basis_matrix Method
basis_matrix(O::AbsNumFieldOrder) -> QQMatrixReturns the basis matrix of
basis_mat_inv Method
basis_mat_inv(A::GenOrdIdl) -> FakeFracFldMatReturn the inverse of the basis matrix of
gen_index Method
gen_index(O::AbsSimpleNumFieldOrder) -> QQFieldElemReturns the generalized index of
is_index_divisor Method
is_index_divisor(O::AbsSimpleNumFieldOrder, d::ZZRingElem) -> Bool
is_index_divisor(O::AbsSimpleNumFieldOrder, d::Int) -> BoolReturns whether
minkowski_matrix Method
minkowski_matrix(O::AbsNumFieldOrder, abs_tol::Int = 64) -> ArbMatrixReturns the Minkowski matrix of ArbFieldElem with radius less then 2^-abs_tol.
norm_change_const Method
norm_change_const(O::AbsSimpleNumFieldOrder) -> (Float64, Float64)Returns
trace_matrix Method
trace_matrix(O::AbsNumFieldOrder) -> ZZMatrixReturns the trace matrix of
+ Method
+(R::AbsSimpleNumFieldOrder, S::AbsSimpleNumFieldOrder) -> AbsSimpleNumFieldOrderGiven two orders
poverorder Method
poverorder(O::AbsSimpleNumFieldOrder, p::ZZRingElem) -> AbsSimpleNumFieldOrder
poverorder(O::AbsSimpleNumFieldOrder, p::Integer) -> AbsSimpleNumFieldOrderThis function tries to find an order that is locally larger than
poverorders Method
poverorders(O, p) -> Vector{Ord}Returns all p-overorders of O, that is all overorders M, such that the index of O in M is a p-power.
pmaximal_overorder Method
pmaximal_overorder(O::AbsSimpleNumFieldOrder, p::ZZRingElem) -> AbsSimpleNumFieldOrder
pmaximal_overorder(O::AbsSimpleNumFieldOrder, p::Integer) -> AbsSimpleNumFieldOrderThis function finds a
pradical Method
pradical(O::AbsSimpleNumFieldOrder, p::{ZZRingElem|Integer}) -> AbsNumFieldOrderIdealGiven a prime number
pradical Method
pradical(O::RelNumFieldOrder, P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> RelNumFieldOrderIdealGiven a prime ideal
ring_of_multipliers Method
ring_of_multipliers(I::AbsNumFieldOrderIdeal) -> AbsNumFieldOrderComputes the order
Invariants
discriminant Method
discriminant(O::AbsSimpleNumFieldOrder) -> ZZRingElemReturns the discriminant of
reduced_discriminant Method
reduced_discriminant(O::AbsSimpleNumFieldOrder) -> ZZRingElemReturns the reduced discriminant, that is, the largest elementary divisor of the trace matrix of
index Method
index(O::AbsSimpleNumFieldOrder) -> ZZRingElemAssuming that the order
different Method
different(R::AbsNumFieldOrder) -> AbsNumFieldOrderIdealThe Dedekind different ideal of
For Gorenstein orders, this is also the inverse ideal of the codifferent.
sourcecodifferent Method
codifferent(R::AbsNumFieldOrder) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}The codifferent ideal of
is_gorenstein Method
is_gorenstein(O::AbsSimpleNumFieldOrder) -> BoolReturn whether the order \mathcal{O} is Gorenstein.
is_bass Method
is_bass(O::AbsSimpleNumFieldOrder) -> BoolReturn whether the order \mathcal{O} is Bass.
is_equation_order Method
is_equation_order(O::NumFieldOrder) -> BoolReturns whether
zeta_log_residue Method
zeta_log_residue(O::AbsSimpleNumFieldOrder, error::Float64) -> ArbFieldElemComputes the residue of the zeta function of ArbFieldElem with radius less then error.
ramified_primes Method
ramified_primes(O::AbsNumFieldOrder) -> Vector{ZZRingElem}Returns the list of prime numbers that divide
Arithmetic
Progress and intermediate results of the functions mentioned here can be obtained via verbose_level, supported are
ClassGroupUnitGroup
All of the functions have a very similar interface: they return an abelian group and a map converting elements of the group into the objects required. The maps also allow a point-wise inverse to server as the discrete logarithm map. For more information on abelian groups, see here, for ideals, here.
sunit_group(::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}})sunit_group_fac_elem(::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}})
For the processing of units, there are a couple of helper functions also available:
is_independent Function
is_independent{T}(x::Vector{T})Given an array of non-zero units in a number field, returns whether they are multiplicatively independent.
sourcePredicates
is_contained Method
is_contained(R::AbsNumFieldOrder, S::AbsNumFieldOrder) -> BoolChecks if
is_maximal Method
is_maximal(R::AbsNumFieldOrder) -> BoolTests if the order
