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(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(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
Order(K::AbsSimpleNumField, A::ZZMatrix, check::Bool = true) -> AbsSimpleNumFieldOrderReturns the order which has basis matrix check is set, it is checked whether
Order(A::AbstractAssociativeAlgebra{<: NumFieldElem}, M::PMat{<: NumFieldElem, T})
-> AlgAssRelOrdReturns the order of
EquationOrder(K::number_field) -> NumFieldOrder
equation_order(K::number_field) -> NumFieldOrderReturns the equation order of the number field
MaximalOrder(K::NumField{QQFieldElem}; discriminant::ZZRingElem, ramified_primes::Vector{ZZRingElem}) -> AbsNumFieldOrderReturns the maximal order of
Example
julia> Qx, x = FlintQQ["x"];
julia> K, a = number_field(x^3 + 2, "a");
julia> O = MaximalOrder(K);MaximalOrder(O::AbsNumFieldOrder; index_divisors::Vector{ZZRingElem}, discriminant::ZZRingElem, ramified_primes::Vector{ZZRingElem}) -> AbsNumFieldOrderReturns the maximal order of the number field that contains
MaximalOrder(O::AlgAssAbsOrd)Given an order
MaximalOrder(A::AbstractAssociativeAlgebra{QQFieldElem}) -> AlgAssAbsOrdReturns a maximal order of
lll(M::AbsNumFieldOrder) -> AbsNumFieldOrderThe same order, but with the basis now being LLL reduced wrt. the Minkowski metric.
any_order(K::number_field)Return some order in
Example
julia> Qx, x = polynomial_ring(FlintQQ, "x");
julia> K, a = number_field(x^2 - 2, "a");
julia> O = EquationOrder(K)
Order of Number field of degree 2 over QQ
with Z-basis AbsSimpleNumFieldOrderElem[1, a]parent(O::AbsNumFieldOrder) -> AbsNumFieldOrderSetReturns the parent of
signature(O::NumFieldOrder) -> Tuple{Int, Int}Returns the signature of the ambient number field of
basis(O::AbsNumFieldOrder) -> Vector{AbsNumFieldOrderElem}Returns the
basis(I::AbsNumFieldOrderFractionalIdeal) -> Vector{AbsSimpleNumFieldElem}Returns the
lll_basis(M::NumFieldOrder) -> Vector{NumFieldElem}A basis for
basis(O::AbsSimpleNumFieldOrder, K::AbsSimpleNumField) -> Vector{AbsSimpleNumFieldElem}Returns the
pseudo_basis(O::RelNumFieldOrder{T, S}) -> Vector{Tuple{NumFieldElem{T}, S}}Returns the pseudo-basis of
basis_pmatrix(O::RelNumFieldOrder) -> PMatReturns the basis pseudo-matrix of
basis_nf(O::RelNumFieldOrder) -> Vector{NumFieldElem}Returns the elements of the pseudo-basis of
inv_coeff_ideals(O::RelNumFieldOrder{T, S}) -> Vector{S}Returns the inverses of the coefficient ideals of the pseudo basis of
basis_matrix(O::AbsNumFieldOrder) -> QQMatrixReturns the basis matrix of
basis_mat_inv(A::GenOrdIdl) -> FakeFracFldMatReturn the inverse of the basis matrix of
gen_index(O::AbsSimpleNumFieldOrder) -> QQFieldElemReturns the generalized index of
is_index_divisor(O::AbsSimpleNumFieldOrder, d::ZZRingElem) -> Bool
is_index_divisor(O::AbsSimpleNumFieldOrder, d::Int) -> BoolReturns whether
minkowski_matrix(O::AbsNumFieldOrder, abs_tol::Int = 64) -> ArbMatrixReturns the Minkowski matrix of ArbFieldElem with radius less then 2^-abs_tol.
norm_change_const(O::AbsSimpleNumFieldOrder) -> (Float64, Float64)Returns
trace_matrix(O::AbsNumFieldOrder) -> ZZMatrixReturns the trace matrix of
+(R::AbsSimpleNumFieldOrder, S::AbsSimpleNumFieldOrder) -> AbsSimpleNumFieldOrderGiven two orders
poverorder(O::AbsSimpleNumFieldOrder, p::ZZRingElem) -> AbsSimpleNumFieldOrder
poverorder(O::AbsSimpleNumFieldOrder, p::Integer) -> AbsSimpleNumFieldOrderThis function tries to find an order that is locally larger than
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(O::AbsSimpleNumFieldOrder, p::ZZRingElem) -> AbsSimpleNumFieldOrder
pmaximal_overorder(O::AbsSimpleNumFieldOrder, p::Integer) -> AbsSimpleNumFieldOrderThis function finds a
pradical(O::AbsSimpleNumFieldOrder, p::{ZZRingElem|Integer}) -> AbsNumFieldOrderIdealGiven a prime number
pradical(O::RelNumFieldOrder, P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> RelNumFieldOrderIdealGiven a prime ideal
ring_of_multipliers(I::AbsNumFieldOrderIdeal) -> AbsNumFieldOrderComputes the order
Invariants
discriminant(O::AbsSimpleNumFieldOrder) -> ZZRingElemReturns the discriminant of
reduced_discriminant(O::AbsSimpleNumFieldOrder) -> ZZRingElemReturns the reduced discriminant, that is, the largest elementary divisor of the trace matrix of
index(O::AbsSimpleNumFieldOrder) -> ZZRingElemAssuming that the order
different(R::AbsNumFieldOrder) -> AbsNumFieldOrderIdealThe different ideal of
codifferent(R::AbsNumFieldOrder) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}The codifferent ideal of
is_gorenstein(O::AbsSimpleNumFieldOrder) -> BoolReturn whether the order \mathcal{O} is Gorenstein.
is_bass(O::AbsSimpleNumFieldOrder) -> BoolReturn whether the order \mathcal{O} is Bass.
is_equation_order(O::NumFieldOrder) -> BoolReturns whether
zeta_log_residue(O::AbsSimpleNumFieldOrder, error::Float64) -> ArbFieldElemComputes the residue of the zeta function of ArbFieldElem with radius less then error.
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 group, 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{T}(x::Vector{T})Given an array of non-zero units in a number field, returns whether they are multiplicatively independent.
Predicates
is_contained(R::AbsNumFieldOrder, S::AbsNumFieldOrder) -> BoolChecks if
is_maximal(R::AbsNumFieldOrder) -> BoolTests if the order