Skip to content

Ideals

(Integral) ideals in orders are always free Z-module of the same rank as the order, hence have a representation via a Z-basis. This can be made unique by normalising the corresponding matrix to be in reduced row echelon form (HNF).

For ideals in maximal orders ZK, we also have a second presentation coming from the ZK module structure and the fact that ZK is a Dedekind ring: ideals can be generated by 2 elements, one of which can be any non-zero element in the ideal.

For efficiency, we will choose the 1st generator to be an integer.

Ideals here are of type AbsNumFieldOrderIdeal, which is, similar to the elements above, also indexed by the type of the field and their elements: AbsNumFieldOrderIdeal{AbsSimpleNumField,AbsSimpleNumFieldElem} for ideals in simple absolute fields.

Different to elements, the parentof an ideal is the set of all ideals in the ring, of type AbsNumFieldOrderIdealSet.

Creation

ideal Method
julia
ideal(O::AbsSimpleNumFieldOrder, a::ZZRingElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, a::Integer) -> AbsNumFieldOrderIdeal

Returns the ideal of O which is generated by a.

source

ideal Method
julia
ideal(O::AbsSimpleNumFieldOrder, M::ZZMatrix; check::Bool = false, M_in_hnf::Bool = false) -> AbsNumFieldOrderIdeal

Creates the ideal of O with basis matrix M. If check is set, then it is checked whether M defines an ideal (expensive). If M_in_hnf is set, then it is assumed that M is already in lower left HNF.

source

ideal Method
julia
ideal(O::AbsSimpleNumFieldOrder, x::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal

Creates the principal ideal (x) of O.

source

ideal Method
julia
ideal(O::AbsSimpleNumFieldOrder, x::ZZRingElem, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, x::Integer, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal

Creates the ideal (x,y) of O.

source

ideal Method
julia
ideal(O::AbsSimpleNumFieldOrder, x::ZZRingElem, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, x::Integer, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal

Creates the ideal (x,y) of O.

source

ideal Method
julia
ideal(O::AbsSimpleNumFieldOrder, a::ZZRingElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, a::Integer) -> AbsNumFieldOrderIdeal

Returns the ideal of O which is generated by a.

source

ideal Method
julia
ideal(O::AbsSimpleNumFieldOrder, x::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal

Creates the principal ideal (x) of O.

source

* Method
julia
*(O::AbsSimpleNumFieldOrder, x::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal
*(x::AbsNumFieldOrderElem, O::AbsNumFieldOrder) -> AbsNumFieldOrderIdeal

Returns the principal ideal (x) of O.

source

factor Method
julia
factor(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Dict{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, Int}

Computes the prime ideal factorization A as a dictionary, the keys being the prime ideal divisors: If lp = factor_dict(A), then keys(lp) are the prime ideal divisors of A and lp[P] is the P-adic valuation of A for all P in keys(lp).

source

factor Method
julia
factor(I::AbsNumFieldOrderIdealSet{AbsSimpleNumField, AbsSimpleNumFieldElem}, a::AbsSimpleNumFieldElem) -> Dict{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, ZZRingElem}

Factors the principal ideal generated by a.

source

coprime_base Method
julia
coprime_base(A::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}) -> Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}
coprime_base(A::Vector{AbsSimpleNumFieldOrderElem}) -> Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}

A coprime base for the (principal) ideals in A, i.e. the returned array generated multiplicatively the same ideals as the input and are pairwise coprime.

source

Arithmetic

All the usual operations are supported:

  • ==, +, *

  • divexact, divides

  • lcm, gcd

  • in

intersect Method
julia
intersect(x::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, y::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}

Returns xy.

source

colon Method
julia
colon(a::AbsNumFieldOrderIdeal, b::AbsNumFieldOrderIdeal) -> AbsSimpleNumFieldOrderFractionalIdeal

The ideal (a:b)={xK|xba}=hom(b,a) where K is the number field.

source

in Method
julia
in(x::NumFieldOrderElem, y::NumFieldOrderIdeal)
in(x::NumFieldElem, y::NumFieldOrderIdeal)
in(x::ZZRingElem, y::NumFieldOrderIdeal)

Returns whether x is contained in y.

source

is_power Method
julia
is_power(A::AbsNumFieldOrderIdeal, n::Int) -> Bool, AbsNumFieldOrderIdeal
is_power(A::AbsSimpleNumFieldOrderFractionalIdeal, n::Int) -> Bool, AbsSimpleNumFieldOrderFractionalIdeal

Computes, if possible, an ideal B s.th. Bn==A holds. In this case, true and B are returned.

source

is_power Method
julia
is_power(I::AbsNumFieldOrderIdeal) -> Int, AbsNumFieldOrderIdeal
is_power(a::AbsSimpleNumFieldOrderFractionalIdeal) -> Int, AbsSimpleNumFieldOrderFractionalIdeal

Writes a=re with e maximal. Note: 1=10.

source

is_invertible Method
julia
is_invertible(A::AbsNumFieldOrderIdeal) -> Bool, AbsSimpleNumFieldOrderFractionalIdeal

Returns true and an inverse of A or false and an ideal B such that ABorder(A), if A is not invertible.

source

isone Method
julia
isone(A::AbsNumFieldOrderIdeal) -> Bool
is_unit(A::AbsNumFieldOrderIdeal) -> Bool

Tests if A is the trivial ideal generated by 1.

source

Class Group

The group of invertable ideals in any order forms a group and the principal ideals a subgroup. The finite quotient is called class group for maximal orders and Picard group or ring class group in general.

class_group Method
julia
class_group(O::AbsSimpleNumFieldOrder; bound = -1,
                      redo = false,
                      GRH = true)   -> FinGenAbGroup, Map

Returns a group A and a map f from A to the set of ideals of O. The inverse of the map is the projection onto the group of ideals modulo the group of principal ideals.

By default, the correctness is guarenteed only assuming the Generalized Riemann Hypothesis (GRH).

Keyword arguments:

  • redo: Trigger a recomputation, thus avoiding the cache.

  • bound: When specified, this is used for the bound for the factor base.

  • GRH: If false, the correctness of the result does not depend on GRH.

source

narrow_class_group Method
julia
narrow_class_group(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, Map

Computes the narrow (or strict) class group of O, ie. the group of invertable ideals modulo principal ideals generated by elements that are positive at all real places.

source

picard_group Method
julia
picard_group(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, MapClassGrp

Returns the Picard group of O and a map from the group in the set of (invertible) ideals of O.

source

ring_class_group Method
julia
ring_class_group(O::AbsNumFieldOrder)

The ring class group (Picard group) of O.

source

julia

julia> k, a = wildanger_field(3, 13);

julia> zk = maximal_order(k);

julia> c, mc = class_group(zk)
(Z/9, ClassGroup map of
Set of ideals of Maximal order of Number field of degree 3 over QQ
with basis AbsSimpleNumFieldElem[1, _$, 1//2*_$^2 + 1//2])

julia> lp = prime_ideals_up_to(zk, 20);

julia> [ mc \ I for I = lp]
10-element Vector{FinGenAbGroupElem}:
 [4]
 [1]
 [4]
 [5]
 [3]
 [2]
 [7]
 [1]
 [0]
 [2]

julia> mc(c[1])
<2, 1//2*_$^2 + 2*_$ + 7//2>
Norm: 2
Minimum: 2
two normal wrt: 2

julia> order(c[1])
9

julia> mc(c[1])^Int(order(c[1]))
<512, 14473970623176763//2*_$^2 - 7182642479841784*_$ + 15670329078123133//2>
Norm: 512
Minimum: 512
two normal wrt: 2

julia> mc \ ans
Abelian group element [0]

The class group, or more precisely the information used to compute it also allows for principal ideal testing and related tasks. In general, due to the size of the objects, the fac_elem versions are more efficient.

is_principal Method
julia
is_principal(A::AbsSimpleNumFieldOrderIdeal) -> Bool
is_principal(A::AbsSimpleNumFieldOrderFractionalIdeal) -> Bool

Tests if A is principal.

source

is_principal_with_data Method
julia
is_principal_with_data(A::AbsSimpleNumFieldOrderIdeal) -> Bool, AbsSimpleNumFieldOrderElem
is_principal_with_data(A::AbsSimpleNumFieldOrderFractionalIdeal) -> Bool, AbsSimpleNumFieldElem

Tests if A is principal and returns (true,α) if A=α or (false,1) otherwise.

source

is_principal_fac_elem Method
julia
is_principal_fac_elem(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Bool, FacElem{AbsSimpleNumFieldElem, number_field}

Tests if A is principal and returns (true,α) if A=α or (false,1) otherwise. The generator will be in factored form.

source

power_class Method
julia
power_class(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, e::ZZRingElem) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}

Computes a (small) ideal in the same class as Ae.

source

power_product_class Method
julia
power_product_class(A::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}, e::Vector{ZZRingElem}) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}

Computes a (small) ideal in the same class as Aiei.

source

power_reduce Method
julia
power_reduce(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, e::ZZRingElem) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, FacElem{AbsSimpleNumFieldElem}

Computes B and α in factored form, such that αB=Ae B has small norm.

source

class_group_ideal_relation Method
julia
class_group_ideal_relation(I::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, c::ClassGrpCtx) -> AbsSimpleNumFieldElem, SRow{ZZRingElem}

Finds a number field element α such that αI factors over the factor base in c.

source

factor_base_bound_grh Method
julia
factor_base_bound_grh(O::AbsSimpleNumFieldOrder) -> Int

Returns an integer B, such that under GRH the ideal class group of O is generated by the prime ideals of norm bounded by B.

source

factor_base_bound_bach Method
julia
factor_base_bound_bach(O::AbsSimpleNumFieldOrder) -> Int

Use the theorem of Bach to find B such that under GRH the ideal class group of O is generated by the prime ideals of norm bounded by B.

source

prime_ideals_up_to Function
julia
prime_ideals_up_to(O::AbsSimpleNumFieldOrder,
                   B::Int;
                   degree_limit::Int = 0, index_divisors::Bool = true) -> Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}

Computes the prime ideals O with norm up to B.

If degree_limit is a nonzero integer k, then prime ideals p with deg(p)>k will be discarded. If 'index_divisors' is set to false, only primes not dividing the index of the order will be computed.

source

julia
prime_ideals_up_to(O::AbsSimpleNumFieldOrder,
                   B::Int;
                   complete::Bool = false,
                   degree_limit::Int = 0,
                   F::Function,
                   bad::ZZRingElem)

Computes the prime ideals O with norm up to B.

If degree_limit is a nonzero integer k, then prime ideals p with deg(p)>k will be discarded.

The function F must be a function on prime numbers not dividing bad such that F(p)=deg(p) for all prime ideals p lying above p.

source

julia
julia> I = mc(c[1])
<2, 1//2*_$^2 + 2*_$ + 7//2>
Norm: 2
Minimum: 2
two normal wrt: 2

julia> is_principal(I)
false

julia> I = I^Int(order(c[1]))
<512, 14473970623176763//2*_$^2 - 7182642479841784*_$ + 15670329078123133//2>
Norm: 512
Minimum: 512
two normal wrt: 2

julia> is_principal(I)
true

julia> is_principal_fac_elem(I)
(true, 5^-1*(_$^2 + _$ + 2)^1*(_$ + 5)^-1*(_$^2 + 1)^-1*3^1*1^-1*(_$ - 3)^2*(_$ + 1)^1)

The computation of S-units is also tied to the class group:

torsion_units Method
julia
torsion_units(O::AbsSimpleNumFieldOrder) -> Vector{AbsSimpleNumFieldOrderElem}

Given an order O, compute the torsion units of O.

source

torsion_unit_group Method
julia
torsion_unit_group(O::AbsSimpleNumFieldOrder) -> GrpAb, Map

Given an order O, returns the torsion units as an abelian group G together with a map GO×.

source

torsion_units_generator Method
julia
torsion_units_generator(O::AbsSimpleNumFieldOrder) -> AbsSimpleNumFieldOrderElem

Given an order O, compute a generator of the torsion units of O.

source

torsion_units_gen_order Method
julia
torsion_units_gen_order(O::AbsSimpleNumFieldOrder) -> AbsSimpleNumFieldOrderElem

Given an order O, compute a generator of the torsion units of O as well as its order.

source

unit_group Method
julia
unit_group(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, Map

Returns a group U and an isomorphism map f:UO×. A set of fundamental units of O can be obtained via [ f(U[1+i]) for i in 1:unit_group_rank(O) ]. f(U[1]) will give a generator for the torsion subgroup.

source

unit_group_fac_elem Method
julia
unit_group_fac_elem(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, Map

Returns a group U and an isomorphism map f:UO×. A set of fundamental units of O can be obtained via [ f(U[1+i]) for i in 1:unit_group_rank(O) ]. f(U[1]) will give a generator for the torsion subgroup. All elements will be returned in factored form.

source

sunit_group Method
julia
sunit_group(I::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}) -> GrpAb, Map

For an array I of (coprime prime) ideals, find the S-unit group defined by I, ie. the group of non-zero field elements which are only divisible by ideals in I.

source

sunit_group_fac_elem Method
julia
sunit_group_fac_elem(I::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}) -> GrpAb, Map

For an array I of (coprime prime) ideals, find the S-unit group defined by I, ie. the group of non-zero field elements which are only divisible by ideals in I. The map will return elements in factored form.

source

sunit_mod_units_group_fac_elem Method
julia
sunit_mod_units_group_fac_elem(I::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}) -> GrpAb, Map

For an array I of (coprime prime) ideals, find the S-unit group defined by I, ie. the group of non-zero field elements which are only divisible by ideals in I modulo the units of the field. The map will return elements in factored form.

source

julia
julia> u, mu = unit_group(zk)
(Z/2 x Z, UnitGroup map of Maximal order of Number field of degree 3 over QQ
with basis AbsSimpleNumFieldElem[1, _$, 1//2*_$^2 + 1//2]
)

julia> mu(u[2])
_$^2 - _$ + 1

julia> u, mu = unit_group_fac_elem(zk)
(Z/2 x Z, UnitGroup map of Factored elements over Number field of degree 3 over QQ
)

julia> mu(u[2])
(1//2*_$^2 - 20*_$ + 59//2)^1*(_$ - 4)^1*(_$^2 + 1)^1*(1//2*_$^2 - 6*_$ + 7//2)^-1*2^-1*(-23//2*_$^2 + 130*_$ - 147//2)^-1

julia> evaluate(ans)
_$^2 - _$ + 1

julia> lp = factor(6*zk)
Dict{AbsSimpleNumFieldOrderIdeal, Int64} with 4 entries:
  <3, _$ + 5>                  => 1
  <3, _$^2 + 1>                => 1
  <2, 5//2*_$^2 + 2*_$ + 5//2> => 2
  <2, 1//2*_$^2 + 2*_$ + 7//2> => 1

julia> s, ms = Hecke.sunit_group(collect(keys(lp)))
(Z/2 x Z^(5), SUnits  map of Number field of degree 3 over QQ for AbsSimpleNumFieldOrderIdeal[<3, _$ + 5>
Norm: 3
Minimum: 3
basis_matrix
[3 0 0; 2 1 0; 2 0 1]
two normal wrt: 3, <3, _$^2 + 1>
Norm: 9
Minimum: 3
basis_matrix
[3 0 0; 0 3 0; 0 0 1]
two normal wrt: 3, <2, 5//2*_$^2 + 2*_$ + 5//2>
Norm: 2
Minimum: 2
basis_matrix
[2 0 0; 1 1 0; 0 0 1]
two normal wrt: 2, <2, 1//2*_$^2 + 2*_$ + 7//2>
Norm: 2
Minimum: 2
basis_matrix
[2 0 0; 1 1 0; 1 0 1]
two normal wrt: 2]
)

julia> ms(s[4])
-1//2*_$^2 + 6*_$ + 5//2

julia> norm(ans)
144

julia> factor(numerator(ans))
1 * 2^4 * 3^2

Miscaellenous

order Method
julia
order(I::NumFieldOrderIdeal) -> AbsSimpleNumFieldOrder

Returns the order of I.

source

order Method
julia
order(a::AbsNumFieldOrderFractionalIdeal) -> AbsNumFieldOrder

The order that was used to define the ideal a.

source

order Method
julia
order(I::NumFieldOrderIdeal) -> AbsSimpleNumFieldOrder

Returns the order of I.

source

order Method
julia
order(a::RelNumFieldOrderFractionalIdeal) -> RelNumFieldOrder

Returns the order of a.

source

nf Method
julia
nf(x::NumFieldOrderIdeal) -> AbsSimpleNumField

Returns the number field, of which x is an integral ideal.

source

basis Method
julia
basis(A::AbsNumFieldOrderIdeal) -> Vector{AbsSimpleNumFieldOrderElem}

Returns the basis of A.

source

julia
basis(I::AbsNumFieldOrderFractionalIdeal) -> Vector{AbsSimpleNumFieldElem}

Returns the Z-basis of I.

source

lll_basis Method
julia
lll_basis(I::NumFieldOrderIdeal) -> Vector{NumFieldElem}

A basis for I that is reduced using the LLL algorithm for the Minkowski metric.

source

basis_matrix Method
julia
basis_matrix(A::AbsNumFieldOrderIdeal) -> ZZMatrix

Returns the basis matrix of A.

source

basis_mat_inv Method
julia
basis_mat_inv(A::GenOrdIdl) -> FakeFracFldMat

Return the inverse of the basis matrix of A.

source

has_princ_gen_special Method
julia
has_princ_gen_special(A::AbsNumFieldOrderIdeal) -> Bool

Returns whether A knows if it is generated by a rational integer.

source

principal_generator Method
julia
principal_generator(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderElem

For a principal ideal A, find a generator.

source

principal_generator_fac_elem Method
julia
principal_generator_fac_elem(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> FacElem{AbsSimpleNumFieldElem, number_field}

For a principal ideal A, find a generator in factored form.

source

minimum Method
julia
minimum(A::AbsNumFieldOrderIdeal) -> ZZRingElem

Returns the smallest non-negative element in AZ.

source

julia
  minimum(A::RelNumFieldOrderIdeal) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}
  minimum(A::RelNumFieldOrderIdeal) -> RelNumFieldOrderIdeal

Returns the ideal AO where O is the maximal order of the coefficient ideals of A.

source

minimum Method
julia
  minimum(A::RelNumFieldOrderIdeal) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}
  minimum(A::RelNumFieldOrderIdeal) -> RelNumFieldOrderIdeal

Returns the ideal AO where O is the maximal order of the coefficient ideals of A.

source

minimum Method
julia
minimum(A::AbsNumFieldOrderIdeal) -> ZZRingElem

Returns the smallest non-negative element in AZ.

source

has_minimum Method
julia
has_minimum(A::AbsNumFieldOrderIdeal) -> Bool

Returns whether A knows its minimum.

source

norm Method
julia
norm(A::AbsNumFieldOrderIdeal) -> ZZRingElem

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

source

julia
norm(a::RelNumFieldOrderIdeal) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}

Returns the norm of a.

source

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

Returns the norm of a.

source

julia
norm(a::AlgAssAbsOrdIdl, O::AlgAssAbsOrd; copy::Bool = true) -> QQFieldElem

Returns the norm of a considered as an (possibly fractional) ideal of O.

source

julia
norm(a::AlgAssRelOrdIdl{S, T, U}, O::AlgAssRelOrd{S, T, U}; copy::Bool = true)
  where { S, T, U } -> T

Returns the norm of a considered as an (possibly fractional) ideal of O.

source

has_norm Method
julia
has_norm(A::AbsNumFieldOrderIdeal) -> Bool

Returns whether A knows its norm.

source

idempotents Method
julia
idempotents(x::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, y::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderElem, AbsSimpleNumFieldOrderElem

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.

source

is_prime Method
julia
is_prime(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Bool

Returns whether A is a prime ideal.

source

is_prime_known Method
julia
is_prime_known(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Bool

Returns whether A knows if it is prime.

source

is_ramified Method
julia
is_ramified(O::AbsSimpleNumFieldOrder, p::Int) -> Bool

Returns whether the integer p is ramified in O. It is assumed that p is prime.

source

ramification_index Method
julia
ramification_index(P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Int

The ramification index of the prime-ideal P.

source

degree Method
julia
degree(P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Int

The inertia degree of the prime-ideal P.

source

valuation Method
julia
valuation(a::NumFieldElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem

Computes the p-adic valuation of a, that is, the largest i such that a is contained in pi.

source

valuation Method
julia
valuation(a::AbsSimpleNumFieldElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem
valuation(a::AbsSimpleNumFieldOrderElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem
valuation(a::ZZRingElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem

Computes the p-adic valuation of a, that is, the largest i such that a is contained in pi.

source

valuation Method
julia
valuation(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem

Computes the p-adic valuation of A, that is, the largest i such that A is contained in pi.

source

valuation Method
julia
valuation(a::Integer, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem

Computes the p-adic valuation of a, that is, the largest i such that a is contained in pi.

source

valuation Method
julia
valuation(a::AbsSimpleNumFieldElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem
valuation(a::AbsSimpleNumFieldOrderElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem
valuation(a::ZZRingElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem

Computes the p-adic valuation of a, that is, the largest i such that a is contained in pi.

source

valuation Method
julia
valuation(A::AbsNumFieldOrderFractionalIdeal, p::AbsNumFieldOrderIdeal)

The valuation of A at p.

source

idempotents Method
julia
idempotents(x::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, y::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderElem, AbsSimpleNumFieldOrderElem

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.

source

Quotient Rings

quo Method
julia
quo(O::AbsSimpleNumFieldOrder, I::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderQuoRing, Map
quo(O::AlgAssAbsOrd, I::AlgAssAbsOrdIdl) -> AbsOrdQuoRing, Map

The quotient ring O/I as a ring together with the section M:O/IO. The pointwise inverse of M is the canonical projection OO/I.

source

residue_ring Method
julia
residue_ring(O::AbsSimpleNumFieldOrder, I::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderQuoRing
residue_ring(O::AlgAssAbsOrd, I::AlgAssAbsOrdIdl) -> AbsOrdQuoRing

The quotient ring O modulo I as a new ring.

source

residue_field Method
julia
residue_field(O::AbsSimpleNumFieldOrder, P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, check::Bool = true) -> Field, Map

Returns the residue field of the prime ideal P together with the projection map. If check is true, the ideal is checked for being prime.

source

mod Method
julia
mod(x::AbsSimpleNumFieldOrderElem, I::AbsNumFieldOrderIdeal)

Returns the unique element y of the ambient order of x with xymodI and the following property: If a1,,adZ1 are the diagonal entries of the unique HNF basis matrix of I and (b1,,bd) is the coefficient vector of y, then 0bi<ai for 1id.

source

crt Method
julia
crt(r1::AbsSimpleNumFieldOrderElem, i1::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, r2::AbsSimpleNumFieldOrderElem, i2::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderElem

Find x such that xr1modi1 and xr2modi2 using idempotents.

source

euler_phi Method
julia
euler_phi(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem

The ideal version of the totient function returns the size of the unit group of the residue ring modulo the ideal.

source

multiplicative_group Method
julia
multiplicative_group(Q::AbsSimpleNumFieldOrderQuoRing) -> FinGenAbGroup, Map{FinGenAbGroup, AbsSimpleNumFieldOrderQuoRing}
unit_group(Q::AbsSimpleNumFieldOrderQuoRing) -> FinGenAbGroup, Map{FinGenAbGroup, AbsSimpleNumFieldOrderQuoRing}

Returns the unit group of Q as an abstract group A and an isomorphism map f:AQ×.

source

multiplicative_group_generators Method
julia
multiplicative_group_generators(Q::AbsSimpleNumFieldOrderQuoRing) -> Vector{AbsSimpleNumFieldOrderQuoRingElem}

Return a set of generators for Q×.

source