Orders

Creation

Order(B::Array{nf_elem, 1}, check::Bool = true) -> NfOrd

Returns the order with -basis . If check is set, it is checked whether defines an order.

Order(K::AnticNumberField, A::FakeFmpqMat, check::Bool = true) -> NfOrd

Returns the order which has basis matrix with respect to the power basis of . If check is set, it is checked whether defines an order.

EquationOrder(K::AnticNumberField) -> NfOrd

Returns the equation of the number field .

Example

julia> Qx, x = PolynomialRing(QQ, "x");

julia> K, a = NumberField(x^2 - 2, "a");

julia> O = EquationOrder(K)
Order of Number field over Rational Field with defining polynomial x^2 - 2
with Z-basis [1,a]

Note

Internally there is a difference between arbitary orders and maximal orders. An order will be treated as a maximal order, that is, as the ring of integers, if it was computed in the following way.


maximal_order(K::AnticNumberField) -> NfMaxOrd
ring_of_integers(K::AnticNumberField) -> NfMaxOrd

Returns the maximal order of .


maximal_order(K::AnticNumberField, primes::Array{fmpz, 1}) -> NfMaxOrd
maximal_order(K::AnticNumberField, primes::Array{Integer, 1}) -> NfMaxOrd
ring_of_integers(K::AnticNumberField, primes::Array{fmpz, 1}) -> NfMaxOrd
ring_of_integers(K::AnticNumberField, primes::Array{Integer, 1}) -> NfMaxOrd

Assuming that primes contains all the prime numbers at which the equation order of is not maximal (e.g. primes may contain all prime divisors of the discriminant of ), this function returns the maximal order of .


make_maximal(O::NfOrd) -> NfMaxOrd

Assuming that is an order, this function returns the same order as a maximal order.

julia> Qx, x = PolynomialRing(QQ, "x");

julia> K, a = NumberField(x^2 - 2, "a");

julia> R = EquationOrder(K)
Order of Number field over Rational Field with defining polynomial x^2 - 2
with Z-basis [1,a]

julia> S = make_maximal(R)
Maximal order of Number field over Rational Field with defining polynomial x^2 - 2
with basis [1,a]

julia> T = maximal_order(K)
Maximal order of Number field over Rational Field with defining polynomial x^2 - 2
with basis [1,a]

julia> basis_mat(S) == basis_mat(T)
true

Basic properties

signature(O::NfOrd) -> Tuple{Int, Int}

Returns the signature of the ambient number field of .

degree(O::NfOrd) -> Int

Returns the degree of .

norm_change_const(O::NfOrd) -> (Float64, Float64)

Returns such that for all we have and , where is the -basis of .

isequationorder(O::NfOrd) -> Bool

Returns whether is the equation order.

nf(O::NfOrd) -> AnticNumberField

Returns the ambient number field of .

basis(O::NfOrd) -> Array{NfOrdElem, 1}

Returns the -basis of .

basis_mat(O::NfOrd) -> FakeFmpqMat

Returns the basis matrix of with respect to the power basis of the ambient number field.

basis_mat_inv(O::NfOrd) -> FakeFmpqMat

Returns the inverse of the basis matrix of .

discriminant(O::NfOrd) -> fmpz

Returns the discriminant of .

gen_index(O::NfOrd) -> fmpq

Generalized index of with respect to the ambient equation order .

index(O::NfOrd) -> fmpz

Assuming that the order contains the ambient equation order , this function returns the index .

is_index_divisor(O::NfOrd, d::fmpz) -> Bool
is_index_divisor(O::NfOrd, d::Int) -> Bool

Returns whether is a divisor of the index of .

minkowski_mat(O::NfOrd, abs_tol::Int = 64) -> arb_mat

Returns the Minkowski matrix of . Thus if has degree , then the result is a matrix in . The entries of the matrix are real balls of type arb with radius less then 2^-abs_tol.

in(a::nf_elem, O::NfOrd) -> Bool

Checks whether lies in .

den(a::nf_elem, O::NfOrd) -> fmpz

Returns the smallest positive integer such that lies in O.

+(R::NfOrd, S::NfOrd) -> NfOrd

Given two orders , of , this function returns the smallest order containing both and . It is assumed that , contain the ambient equation order and have coprime index.

poverorder(O::NfOrd, p::fmpz) -> NfOrd
poverorder(O::NfOrd, p::Integer) -> NfOrd

This function tries to find an order that is locally larger than at the prime : If divides the index , this function will return an order such that . Otherwise is returned.

pmaximal_overorder(O::NfOrd, p::fmpz) -> NfOrd
pmaximal_overorder(O::NfOrd, p::Integer) -> NfOrd

This function finds a -maximal order containing . That is, the index is not dividible by .

Elements

Creation


  call(O::NfOrd, a::nf_elem, check::Bool = true) -> NfOrdElem

Given an element of the ambient number field of , this function coerces the element into . It will be checked that is contained in if and only if check is true.


  call(O::NfOrd, a::Union{fmpz, Integer}) -> NfOrdElem

Given an element of type fmpz or Integer, this function coerces the element into . It will be checked that is contained in if and only if check is true.


  call(O::NfOrd, arr::Array{fmpz, 1})

Returns the element of with coefficient vector arr.


  call{T <: Integer}(O::NfOrd, arr::Array{T, 1})

Returns the element of with coefficient vector arr.


  call(O::NfOrd) -> NfOrdElem

This function constructs a new element of which is set to .

Basic properties


parent(a::NfOrdElem) -> NfOrd

Returns the order of which is an element.


elem_in_nf(a::NfOrdElem) -> nf_elem

Returns the element considered as an element of the ambient number field.


elem_in_basis(a::NfOrdElem) -> Array{fmpz, 1}

Returns the coefficient vector of .


discriminant(B::Array{NfOrdElem, 1}) -> fmpz

Returns the discriminant of the family .


==(x::NfOrdElem, y::NfOrdElem) -> Bool

Returns whether and are equal.


zero(O::NfOrd) -> NfOrdElem

Returns the zero element of .


one(O::NfOrd) -> NfOrdElem

Returns the zero element of .


iszero(a::NfOrd) -> Bool

Tests if is one.


isone(a::NfOrd) -> Bool

Tests if is one.

Arithmetic


-(x::NfOrdElem) -> NfOrdElem

Returns the additive inverse of .


+(x::NfOrdElem, y::NfOrdElem) -> NfOrdElem

Returns .


-(x::NfOrdElem, y::NfOrdElem) -> NfOrdElem

Returns .


*(x::NfOrdElem, y::NfOrdElem) -> NfOrdElem

Returns .


^(x::NfOrdElem, y::Union{fmpz, Int})

Returns .


mod(a::NfOrdElem, m::Union{fmpz, Int}) -> NfOrdElem

Reduces the coefficient vector of modulo and returns the corresponding element. The coefficient vector of the result will have entries with .


powermod(a::NfOrdElem, i::fmpz, m::Integer) -> NfOrdElem

Returns the element modulo .

Miscallenous


representation_mat(a::NfOrdElem) -> fmpz_mat

Returns the representation matrix of the element .


representation_mat(a::NfOrdElem, K::AnticNumberField) -> FakeFmpqMat

Returns the representation matrix of the element considered as an element of the ambient number field . It is assumed that is the ambient number field of the order of .


trace(a::NfOrdElem) -> fmpz

Returns the trace of .


norm(a::NfOrdElem) -> fmpz

Returns the norm of .


rand(O::NfOrd, n::Union{Integer, fmpz}) -> NfOrdElem

Computes a coefficient vector with entries uniformly distributed in and returns the corresponding element of the order .


minkowski_map(a::NfOrdElem, abs_tol::Int) -> Array{arb, 1}

Returns the image of under the Minkowski embedding. Every entry of the array returned is of type arb with radius less then 2^-abs_tol.


conjugates_arb(x::NfOrdElem, abs_tol::Int) -> Array{acb, 1}

Compute the the conjugates of x as elements of type acb. Recall that we order the complex conjugates such that for .

Every entry y of the array returned satisfies radius(real(y)) < 2^-abs_tol, radius(imag(y)) < 2^-abs_tol respectively.


conjugates_arb_log(x::NfOrdElem, abs_tol::Int) -> Array{arb, 1}

Returns the elements as elements of type arb radius less then 2^-abs_tol.


t2(x::NfOrdElem, abs_tol::Int = 32) -> arb

Return the -norm of . The radius of the result will be less than 2^-abs_tol.

Ideals

Creation


ideal(O::NfOrd, a::Int) -> NfOrdIdl

Returns the ideal of which is generated by .


ideal(O::NfOrd, a::fmpz) -> NfOrdIdl

Returns the ideal of which is generated by .


ideal(O::NfOrd, A::fmpz_mat) -> NfOrdIdl

Assuming that is a nonsingular integer matrix, this function returns the ideal given by , where .


ideal(O::NfOrd, a::NfOrdElem) -> NfOrdIdl

Returns the ideal of which is generated by .


ring_of_multipliers(I::NfOrdIdl) -> NfOrdGen

Computes the order , which is the set of all with .

*(O::NfOrd, x::NfOrdElem) -> NfOrdIdl
*(x::NfOrdElem, O::NfOrd) -> NfOrdIdl

Returns the principal ideal of .

Arithmetic


==(x::NfOrdIdl, y::NfOrdIdl)

Returns whether and are equal.


+(x::NfOrdIdl, y::NfOrdIdl)

Returns .

*(x::NfOrdIdl, y::NfOrdIdl)

Returns .

intersection(x::NfOrdIdl, y::NfOrdIdl) -> NfOrdIdl
lcm(x::NfOrdIdl, y::NfOrdIdl) -> NfOrdIdl

Returns .

Miscaellenous


parent(I::NfOrdIdl) -> NfOrd

Returns the order of .


basis(I::NfOrdIdl) -> Array{NfOrdElem, 1}

Returns the -basis of .


basis_mat(I::NfOrdIdl) -> fmpz_mat

Returns the basis matrix of with respect to the basis of the order.


minimum(I::NfOrdIdl) -> fmpz

Returns the minimum of , that is, the minimum of , where is the order of .


norm(I::NfOrdIdl) -> fmpz

Returns the norm of , that is, the cardinality of , where is the order of .


in(x::NfOrdElem, y::NfOrdIdl)
in(x::nf_elem, y::NfOrdIdl)
in(x::fmpz, y::NfOrdIdl)

Returns whether is contained in .

idempotents(x::NfOrdIdl, y::NfOrdIdl) -> NfOrdElem, NfOrdElem

Returns a tuple (e, f) consisting of elements e in x, f in y such that 1 = e + f.

If the ideals are not coprime, an error is raised.


mod(x::NfOrdElem, I::NfOrdIdl)

Returns the unique element of the ambient order of with and the following property: If are the diagonal entries of the unique HNF basis matrix of and is the coefficient vector of , then for .


pradical(O::NfOrd, p::fmpz) -> NfOrdIdl

Given a prime number , this function returns the -radical of , which is just . It is not checked that is prime.

Fractional ideals

Creation


frac_ideal(O::NfOrd, A::fmpz_mat, b::fmpz) -> NfOrdFracIdl

Creates the fractional ideal of with basis matrix .


frac_ideal(O::NfOrd, A::FakeFmpqMat) -> NfOrdFracIdl

Creates the fractional ideal of with basis matrix .


frac_ideal(O::NfOrd, I::NfOrdIdl) -> NfOrdFracIdl

Turns the ideal into a fractional ideal of .


frac_ideal(O::NfOrd, I::NfOrdIdl, b::fmpz) -> NfOrdFracIdl

Creates the fractional ideal of .


frac_ideal(O::NfOrd, a::nf_elem) -> NfOrdFracIdl

Creates the principal fractional ideal of .


frac_ideal(O::NfOrd, a::NfOrdElem) -> NfOrdFracIdl

Creates the principal fractional ideal of .

Arithmetic


==(x::NfOrdFracIdl, y::NfOrdFracIdl) -> Bool

Returns whether and are equal.

Miscaellenous


basis_mat(I::NfOrdFracIdl) -> FakeFmpqMat

Returns the basis matrix of with respect to the basis of the order.


basis_mat_inv(I::NfOrdFracIdl) -> FakeFmpqMat

Returns the inverse of the basis matrix of .


basis(I::NfOrdFracIdl) -> Array{nf_elem, 1}

Returns the -basis of .


norm(I::NfOrdFracIdl) -> fmpq

Returns the norm of