# 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