## Creation

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


Returns the order with $\mathbf Z$-basis $B$. If check is set, it is checked whether $B$ defines an order.

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


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

Order(A::NfOrdFracIdl) -> NfOrd


Returns the fractional ideal $A$ as an order of the ambient number field.

  Order(K::NfRel, M::PMat) -> NfRelOrd


Returns the order which has basis pseudo-matrix $M$ with respect to the power basis of $K$.

EquationOrder(K::AnticNumberField) -> NfOrd


Returns the equation order of the number field $K$.

MaximalOrder(K::AnticNumberField) -> NfOrd


Returns the maximal order of $K$. Example

julia> Qx, x = FlintQQ["x"]
julia> K, a = NumberField(x^3 + 2, "a")
julia> O = MaximalOrder(K)


MaximalOrder(K::NfOrd) -> NfOrd


Returns the maximal order of $K$.

### Example

julia> Qx, x = PolynomialRing(FlintQQ, "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 Hecke.NfOrdElem[1, a]


## Basic properties

parent(O::NfOrd) -> NfOrdSet


Returns the parent of $\mathcal O$, that is, the set of orders of the ambient number field.

isequation_order(O::NfOrd) -> Bool


Returns whether $\mathcal O$ is the equation order of the ambient number field.

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


Returns the signature of the ambient number field of $\mathcal O$.

nf(O::NfOrd) -> AnticNumberField


Returns the ambient number field of $\mathcal O$.

degree(O::NfOrd) -> Int


Returns the degree of $\mathcal O$.

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


Returns the $\mathbf Z$-basis of $\mathcal O$.

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


Returns the basis of A.

basis(O::NfOrd, K::AnticNumberField) -> Array{nf_elem, 1}


Returns the $\mathbf Z$-basis elements of $\mathcal O$ as elements of the ambient number field.

basis_mat(O::NfOrd) -> FakeFmpqMat


Returns the basis matrix of $\mathcal O$ with respect to the power basis of the ambient number field.

basis_mat(A::NfOrdIdl) -> fmpz_mat

Returns the basis matrix of $A$.

  basis_mat(O::NfRelOrd{T, S}) -> Generic.Mat{T}


Returns the basis matrix of $\mathcal O$ with respect to the power basis of the ambient number field.

  basis_mat(a::NfRelOrdIdl{T, S}) -> Generic.Mat{T}


Returns the basis matrix of $a$.

basis_mat_inv(O::NfOrd) -> FakeFmpqMat


Returns the inverse of the basis matrix of $\mathcal O$.

basis_mat_inv(A::NfOrdIdl) -> fmpz_mat

Returns the inverse basis matrix of $A$.

  basis_mat_inv(O::NfRelOrd{T, S}) -> Generic.Mat{T}


Returns the inverse of the basis matrix of $\mathcal O$.

  basis_mat_inv(a::NfRelOrdIdl{T, S}) -> Generic.Mat{T}


Returns the inverse of the basis matrix of $a$.

discriminant(O::NfOrd) -> fmpz


Returns the discriminant of $\mathcal O$.

gen_index(O::NfOrd) -> fmpq


Returns the generalized index of $\mathcal O$ with respect to the equation order of the ambient number field.

index(O::NfOrd) -> fmpz


Assuming that the order $\mathcal O$ contains the equation order $\mathbf Z[\alpha]$ of the ambient number field, this function returns the index $[ \mathcal O : \mathbf Z]$.

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


Returns whether $d$ is a divisor of the index of $\mathcal O$. It is assumed that $\mathcal O$ contains the equation order of the ambient number field.

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


Returns the Minkowski matrix of $\mathcal O$. Thus if $\mathcal O$ has degree $d$, then the result is a matrix in $\operatorname{Mat}_{d\times d}(\mathbf R)$. 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 $a$ lies in $\mathcal O$.

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


Returns the smallest positive integer $k$ such that $k \cdot a$ is contained in $\mathcal O$.

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


Returns $(c_1, c_2) \in \mathbf R_{>0}^2$ such that for all $x = \sum_{i=1}^d x_i \omega_i \in \mathcal O$ we have $T_2(x) \leq c_1 \cdot \sum_i^d x_i^2$ and $\sum_i^d x_i^2 \leq c_2 \cdot T_2(x)$, where $(\omega_i)_i$ is the $\mathbf Z$-basis of $\mathcal O$.

trace_matrix(O::NfOrd) -> fmpz_mat


Returns the trace matrix of \mathcal O, that is, the matrix $(\operatorname{tr}_{K/\mathbf Q}(b_i \cdot b_j))_{1 \leq i, j \leq d}$.

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


Given two orders $R$, $S$ of $K$, this function returns the smallest order containing both $R$ and $S$. It is assumed that $R$, $S$ 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 $\mathcal O$ at the prime $p$: If $p$ divides the index $[ \mathcal O_K : \mathcal O]$, this function will return an order $R$ such that $v_p([ \mathcal O_K : R]) < v_p([ \mathcal O_K : \mathcal O])$. Otherwise $\mathcal O$ is returned.

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


This function finds a $p$-maximal order $R$ containing $\mathcal O$. That is, the index $[ \mathcal O_K : R]$ is not dividible by $p$.

## Elements

### Creation

(O::NfOrd)(::nf_elem)


### Basic properties

parent(a::NfOrdElem) -> NfOrd


Returns the order of which $a$ is an element.

elem_in_nf(a::NfOrdElem) -> nf_elem


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

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


Returns the coefficient vector of $a$.

  elem_in_basis(a::NfRelOrdElem{T}) -> Vector{T}


Returns the coefficient vector of $a$.

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


Returns the discriminant of the family $B$.

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


Returns whether $x$ and $y$ are equal.

zero(O::NfOrd) -> NfOrdElem


Returns the zero element of $\mathcal O$.

one(O::NfOrd) -> NfOrdElem


Returns the one element of $\mathcal O$.

iszero(a::NfOrd) -> Bool


Tests if $a$ is zero.

isone(a::NfOrd) -> Bool


Tests if $a$ is one.

### Arithmetic

-(x::NfOrdElem) -> NfOrdElem


Returns the additive inverse of $x$.

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


Returns $x + y$.

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


Returns $x - y$.

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


Returns $x \cdot y$.

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


Returns $x^y$.

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


Reduces the coefficient vector of $a$ modulo $m$ and returns the corresponding element. The coefficient vector of the result will have entries $x$ with $0 \leq x \leq m$.

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


Returns the element $a^i$ modulo $m$.

### Miscallenous

representation_mat(a::NfOrdElem) -> fmpz_mat


Returns the representation matrix of the element $a$.

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


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

trace(a::NfOrdElem) -> fmpz


Returns the trace of $a$.

norm(a::NfOrdElem) -> fmpz


Returns the norm of $a$.

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


Computes a coefficient vector with entries uniformly distributed in $\{-n,\dotsc,-1,0,1,\dotsc,n\}$ and returns the corresponding element of the order $\mathcal O$.

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


Returns the image of $a$ 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 $\sigma_{r+1}(x),...,\sigma_{r+2s}(x)$ such that $\sigma_{i}(x) = \overline{\sigma_{i + s}(x)}$ for $r + 2 \leq i \leq r + s$.

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 $(\log(\lvert \sigma_1(x) \rvert),\dotsc,\log(\lvert\sigma_r(x) \rvert), \dotsc,2\log(\lvert \sigma_{r+1}(x) \rvert),\dotsc, 2\log(\lvert \sigma_{r+s}(x)\rvert))$ as elements of type arb radius less then 2^-abs_tol.

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


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

## Ideals

### Creation

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


Returns the ideal of $\mathcal O$ which is generated by $a$.

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


Returns the ideal of $\mathcal O$ which is generated by $a$.

ideal(O::NfOrd, x::fmpz_mat, check::Bool = false) -> NfOrdIdl


Creates the ideal of $\mathcal O$ with basis matrix $x$. If check is set, then it is checked whether $x$ defines an ideal (expensive).

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


Creates the principal ideal $(x)$ of $\mathcal O$.

ring_of_multipliers(I::NfOrdIdl) -> NfOrd


Computes the order $(I : I)$, which is the set of all $x \in K$ with $xI \subseteq I$.

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


Returns the principal ideal $(x)$ of $\mathcal O$.

### Arithmetic

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


Returns whether $x$ and $y$ are equal.

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


Returns $x + y$.

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


Returns $x \cdot y$.

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


Returns $x \cap y$.

### Miscaellenous

parent(I::NfOrdIdl) -> NfOrd


Returns the order of $I$.

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


Returns the $\mathbf Z$-basis of $\mathcal O$.

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


Returns the basis of A.

basis_mat(O::NfOrd) -> FakeFmpqMat


Returns the basis matrix of $\mathcal O$ with respect to the power basis of the ambient number field.

basis_mat(A::NfOrdIdl) -> fmpz_mat

Returns the basis matrix of $A$.

  basis_mat(O::NfRelOrd{T, S}) -> Generic.Mat{T}


Returns the basis matrix of $\mathcal O$ with respect to the power basis of the ambient number field.

  basis_mat(a::NfRelOrdIdl{T, S}) -> Generic.Mat{T}


Returns the basis matrix of $a$.

basis_mat_inv(O::NfOrd) -> FakeFmpqMat


Returns the inverse of the basis matrix of $\mathcal O$.

basis_mat_inv(A::NfOrdIdl) -> fmpz_mat

Returns the inverse basis matrix of $A$.

  basis_mat_inv(O::NfRelOrd{T, S}) -> Generic.Mat{T}


Returns the inverse of the basis matrix of $\mathcal O$.

  basis_mat_inv(a::NfRelOrdIdl{T, S}) -> Generic.Mat{T}


Returns the inverse of the basis matrix of $a$.

minimum(A::NfOrdIdl) -> fmpz


Returns the smallest nonnegative element in $A \cap \mathbf Z$.

norm(A::NfOrdIdl) -> fmpz


Returns the norm of $A$, that is, the cardinality of $\mathcal O/A$, where $\mathcal O$ is the order of $A$.

norm(a::NfRelOrdIdl) -> NfOrdIdl


Returns the norm of $a$.

norm(a::NfRelOrdFracIdl{T, S}) -> S


Returns the norm of $a$

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


Returns whether $x$ is contained in $y$.

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 $y$ of the ambient order of $x$ with $x \equiv y \bmod I$ and the following property: If $a_1,\dotsc,a_d \in \Z_{\geq 1}$ are the diagonal entries of the unique HNF basis matrix of $I$ and $(b_1,\dotsc,b_d)$ is the coefficient vector of $y$, then $0 \leq b_i < a_i$ for $1 \leq i \leq d$.

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


Given a prime number $p$, this function returns the $p$-radical $\sqrt{p\mathcal O}$ of $\mathcal O$, which is just $\{ x \in \mathcal O \mid \exists k \in \mathbf Z_{\geq 0} \colon x^k \in p\mathcal O \}$. It is not checked that $p$ is prime.

## Fractional ideals

### Creation

frac_ideal(::NfOrd, ::fmpz_mat)
frac_ideal(::NfOrd, ::fmpz_mat, ::fmpz)
frac_ideal(::NfOrd, ::FakeFmpqMat)
frac_ideal(::NfOrd, ::NfOrdIdl)
frac_ideal(::NfOrd, ::NfOrdIdl, ::fmpz)
frac_ideal(::NfOrd, ::nf_elem)
frac_ideal(::NfOrd, ::NfOrdElem)


### Arithmetic

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


Returns whether $x$ and $y$ are equal.

### Miscaellenous

order(::NfOrdFracIdl)
basis_mat(::NfOrdFracIdl)
basis_mat_inv(::NfOrdFracIdl)
basis(::NfOrdFracIdl)
norm(::NfOrdFracIdl)