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) -> AbsSimpleNumFieldOrder
Returns 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) -> AbsSimpleNumFieldOrder
Returns the order which has basis matrix check
is set, it is checked whether
Order(K::AbsSimpleNumField, A::QQMatrix; check::Bool = true) -> AbsSimpleNumFieldOrder
Returns the order which has basis matrix check
is set, it is checked whether
Order Method
Order(K::AbsSimpleNumField, A::ZZMatrix, check::Bool = true) -> AbsSimpleNumFieldOrder
Returns the order which has basis matrix check
is set, it is checked whether
Order(A::AbstractAssociativeAlgebra{<: NumFieldElem}, M::PMat{<: NumFieldElem, T})
-> AlgAssRelOrd
Returns the order of
EquationOrder Method
EquationOrder(K::number_field) -> NumFieldOrder
equation_order(K::number_field) -> NumFieldOrder
Returns the equation order of the number field
MaximalOrder Method
MaximalOrder(K::NumField{QQFieldElem}; discriminant::ZZRingElem, ramified_primes::Vector{ZZRingElem}) -> AbsNumFieldOrder
Returns the maximal order of
Example
julia> Qx, x = QQ["x"];
julia> K, a = number_field(x^3 + 2, "a");
julia> O = MaximalOrder(K);
MaximalOrder Method
MaximalOrder(O::AbsNumFieldOrder; index_divisors::Vector{ZZRingElem}, discriminant::ZZRingElem, ramified_primes::Vector{ZZRingElem}) -> AbsNumFieldOrder
Returns the maximal order of the number field that contains
MaximalOrder(O::AlgAssAbsOrd)
Given an order
MaximalOrder(A::AbstractAssociativeAlgebra{QQFieldElem}) -> AlgAssAbsOrd
Returns a maximal order of
lll Method
lll(M::AbsNumFieldOrder) -> AbsNumFieldOrder
The same order, but with the basis now being LLL reduced wrt. the Minkowski metric.
any_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");
julia> O = EquationOrder(K)
Order of Number field of degree 2 over QQ
with Z-basis AbsSimpleNumFieldOrderElem[1, a]
parent Method
parent(O::AbsNumFieldOrder) -> AbsNumFieldOrderSet
Returns 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
lll_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) -> PMat
Returns 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) -> QQMatrix
Returns the basis matrix of
basis_mat_inv Method
basis_mat_inv(A::GenOrdIdl) -> FakeFracFldMat
Return the inverse of the basis matrix of
gen_index Method
gen_index(O::AbsSimpleNumFieldOrder) -> QQFieldElem
Returns the generalized index of
is_index_divisor Method
is_index_divisor(O::AbsSimpleNumFieldOrder, d::ZZRingElem) -> Bool
is_index_divisor(O::AbsSimpleNumFieldOrder, d::Int) -> Bool
Returns whether
minkowski_matrix Method
minkowski_matrix(O::AbsNumFieldOrder, abs_tol::Int = 64) -> ArbMatrix
Returns 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) -> ZZMatrix
Returns the trace matrix of
+ Method
+(R::AbsSimpleNumFieldOrder, S::AbsSimpleNumFieldOrder) -> AbsSimpleNumFieldOrder
Given two orders
poverorder Method
poverorder(O::AbsSimpleNumFieldOrder, p::ZZRingElem) -> AbsSimpleNumFieldOrder
poverorder(O::AbsSimpleNumFieldOrder, p::Integer) -> AbsSimpleNumFieldOrder
This 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) -> AbsSimpleNumFieldOrder
This function finds a
pradical Method
pradical(O::AbsSimpleNumFieldOrder, p::{ZZRingElem|Integer}) -> AbsNumFieldOrderIdeal
Given a prime number
pradical Method
pradical(O::RelNumFieldOrder, P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> RelNumFieldOrderIdeal
Given a prime ideal
ring_of_multipliers Method
ring_of_multipliers(I::AbsNumFieldOrderIdeal) -> AbsNumFieldOrder
Computes the order
Invariants
discriminant Method
discriminant(O::AbsSimpleNumFieldOrder) -> ZZRingElem
Returns the discriminant of
reduced_discriminant Method
reduced_discriminant(O::AbsSimpleNumFieldOrder) -> ZZRingElem
Returns the reduced discriminant, that is, the largest elementary divisor of the trace matrix of
index Method
index(O::AbsSimpleNumFieldOrder) -> ZZRingElem
Assuming that the order
different Method
different(R::AbsNumFieldOrder) -> AbsNumFieldOrderIdeal
The different ideal of
codifferent Method
codifferent(R::AbsNumFieldOrder) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}
The codifferent ideal of
is_gorenstein Method
is_gorenstein(O::AbsSimpleNumFieldOrder) -> Bool
Return whether the order \mathcal{O}
is Gorenstein.
is_bass Method
is_bass(O::AbsSimpleNumFieldOrder) -> Bool
Return whether the order \mathcal{O}
is Bass.
is_equation_order Method
is_equation_order(O::NumFieldOrder) -> Bool
Returns whether
zeta_log_residue Method
zeta_log_residue(O::AbsSimpleNumFieldOrder, error::Float64) -> ArbFieldElem
Computes 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
ClassGroup
UnitGroup
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.
Predicates
is_contained Method
is_contained(R::AbsNumFieldOrder, S::AbsNumFieldOrder) -> Bool
Checks if
is_maximal Method
is_maximal(R::AbsNumFieldOrder) -> Bool
Tests if the order