Ideals

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

For ideals in maximal orders ZKZ_K, we also have a second presentation coming from the ZKZ_K module structure and the fact that ZKZ_K 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

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

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

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

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

source
idealMethod
ideal(O::AbsSimpleNumFieldOrder, x::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal

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

source
idealMethod
ideal(O::AbsSimpleNumFieldOrder, x::ZZRingElem, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, x::Integer, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal

Creates the ideal (x,y)(x, y) of O\mathcal O.

source
idealMethod
ideal(O::AbsSimpleNumFieldOrder, x::ZZRingElem, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, x::Integer, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal

Creates the ideal (x,y)(x, y) of O\mathcal O.

source
idealMethod
ideal(O::AbsSimpleNumFieldOrder, a::ZZRingElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, a::Integer) -> AbsNumFieldOrderIdeal

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

source
idealMethod
ideal(O::AbsSimpleNumFieldOrder, x::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal

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

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

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

source
factorMethod
factor(a::T) where T <: RingElement -> Fac{T}

Return a factorization of aa into irreducible elements, as a Fac{T}. The irreducible elements in the factorization are pairwise coprime.

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

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

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

Factors the principal ideal generated by aa.

source
coprime_baseMethod
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 AA, 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
intersectMethod
intersect(x::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, y::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}

Returns xyx \cap y.

source
colonMethod
colon(a::AbsNumFieldOrderIdeal, b::AbsNumFieldOrderIdeal) -> AbsSimpleNumFieldOrderFractionalIdeal

The ideal (a:b)={xKxba}=hom(b,a)(a:b) = \{x \in K | xb \subseteq a\} = \hom(b, a) where KK is the number field.

source
inMethod
in(x::NumFieldOrderElem, y::NumFieldOrderIdeal)
in(x::NumFieldElem, y::NumFieldOrderIdeal)
in(x::ZZRingElem, y::NumFieldOrderIdeal)

Returns whether xx is contained in yy.

source
is_powerMethod
is_power(A::AbsNumFieldOrderIdeal, n::Int) -> Bool, AbsNumFieldOrderIdeal
is_power(A::AbsSimpleNumFieldOrderFractionalIdeal, n::Int) -> Bool, AbsSimpleNumFieldOrderFractionalIdeal

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

source
is_powerMethod
is_power(I::AbsNumFieldOrderIdeal) -> Int, AbsNumFieldOrderIdeal
is_power(a::AbsSimpleNumFieldOrderFractionalIdeal) -> Int, AbsSimpleNumFieldOrderFractionalIdeal

Writes a=rea = r^e with ee maximal. Note: 1=101 = 1^0.

source
is_invertibleMethod
is_invertible(A::AbsNumFieldOrderIdeal) -> Bool, AbsSimpleNumFieldOrderFractionalIdeal

Returns true and an inverse of AA or false and an ideal BB such that ABorder(A)A*B \subsetneq order(A), if AA is not invertible.

source
isoneMethod
isone(A::AbsNumFieldOrderIdeal) -> Bool
is_unit(A::AbsNumFieldOrderIdeal) -> Bool

Tests if AA is the trivial ideal generated by 11.

source

Class Group

The group of invertible 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_groupMethod
class_group(O::AbsSimpleNumFieldOrder; bound = -1,
                      redo = false,
                      GRH = true)   -> FinGenAbGroup, Map

Returns a group AA and a map ff from AA to the set of ideals of OO. 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_groupMethod
narrow_class_group(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, Map

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

source
picard_groupMethod
picard_group(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, MapClassGrp

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

source
ring_class_groupMethod
ring_class_group(O::AbsNumFieldOrder)

The ring class group (Picard group) of OO.

source
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 zk)

julia> lp = prime_ideals_up_to(zk, 20);

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

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

julia> order(c[1])
9

julia> mc(c[1])^Int(order(c[1]))
<512, 43959719112139289493//2*_$^2 - 21814811847856022656*_$ + 47593247393471446019//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_principalMethod
is_principal(A::AbsSimpleNumFieldOrderIdeal) -> Bool
is_principal(A::AbsSimpleNumFieldOrderFractionalIdeal) -> Bool

Tests if AA is principal.

source
is_principal_with_dataMethod
is_principal_with_data(A::AbsSimpleNumFieldOrderIdeal) -> Bool, AbsSimpleNumFieldOrderElem
is_principal_with_data(A::AbsSimpleNumFieldOrderFractionalIdeal) -> Bool, AbsSimpleNumFieldElem

Tests if AA is principal and returns (true,α)(\mathtt{true}, \alpha) if A=αA = \langle \alpha\rangle or (false,1)(\mathtt{false}, 1) otherwise.

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

Tests if AA is principal and returns (true,α)(\mathtt{true}, \alpha) if A=αA = \langle \alpha\rangle or (false,1)(\mathtt{false}, 1) otherwise. The generator will be in factored form.

source
power_classMethod
power_class(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, e::ZZRingElem) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}

Computes a (small) ideal in the same class as AeA^e.

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

Computes a (small) ideal in the same class as Aiei\prod A_i^{e_i}.

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

Computes BB and α\alpha in factored form, such that αB=Ae\alpha B = A^e BB has small norm.

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

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

source
factor_base_bound_grhMethod
factor_base_bound_grh(O::AbsSimpleNumFieldOrder) -> Int

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

source
factor_base_bound_bachMethod
factor_base_bound_bach(O::AbsSimpleNumFieldOrder) -> Int

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

source
prime_ideals_up_toFunction
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\mathcal O with norm up to BB.

If degree_limit is a nonzero integer kk, then prime ideals p\mathfrak p with deg(p)>k\deg(\mathfrak 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
prime_ideals_up_to(O::AbsSimpleNumFieldOrder,
                   B::Int;
                   complete::Bool = false,
                   degree_limit::Int = 0,
                   F::Function,
                   bad::ZZRingElem)

Computes the prime ideals O\mathcal O with norm up to BB.

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

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

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

julia> is_principal(I)
false

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

julia> is_principal(I)
true

julia> is_principal_fac_elem(I)
(true, (_$ + 29)^2*5^-3*(1//2*_$^2 - 6*_$ + 5//2)^2*(1//2*_$^2 - 6*_$ + 7//2)^2*31^-2*(19//2*_$^2 - 117*_$ + 117//2)^2*(_$ - 4)^-2*(_$^2 + _$ + 2)^3*(_$ + 5)^-3*(_$^2 + 1)^-3*3^1*(10*_$^2 - 91*_$ - 156)^-2*(_$ + 1)^1*(3//2*_$^2 + 1//2)^2*(_$ + 6)^2*1^-1)

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

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

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

source
torsion_unit_groupMethod
torsion_unit_group(O::AbsSimpleNumFieldOrder) -> GrpAb, Map

Given an order O\mathcal O, returns the torsion units as an abelian group GG together with a map GO×G \to \mathcal O^\times.

source
torsion_units_generatorMethod
torsion_units_generator(O::AbsSimpleNumFieldOrder) -> AbsSimpleNumFieldOrderElem

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

source
torsion_units_gen_orderMethod
torsion_units_gen_order(O::AbsSimpleNumFieldOrder) -> AbsSimpleNumFieldOrderElem

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

source
unit_groupMethod
unit_group(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, Map

Returns a group UU and an isomorphism map f ⁣:UO×f \colon U \to \mathcal O^\times. A set of fundamental units of O\mathcal 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_elemMethod
unit_group_fac_elem(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, Map

Returns a group UU and an isomorphism map f ⁣:UO×f \colon U \to \mathcal O^\times. A set of fundamental units of O\mathcal 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_groupMethod
sunit_group(I::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}) -> GrpAb, Map

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

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

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

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

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

source
julia> u, mu = unit_group(zk)
(Z/2 x Z, UnitGroup map of Maximal order of number field of degree 3 over QQ
)

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 + 6*_$ - 3//2)^-1*(_$^2 + 1)^1*(_$ + 5)^1*3^-1*2^-2

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

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

julia> s, ms = Hecke.sunit_group(collect(keys(lp)))
(Z/2 x Z^(5), SUnits  map of k for AbsSimpleNumFieldOrderIdeal[<3, _$ + 5>, <3, _$^2 + 1>, <2, 7//2*_$^2 + 2*_$ + 7//2>, <2, 1//2*_$^2 + 3//2>]
)

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

julia> norm(ans)
-144

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

Miscellaneous

orderMethod
order(::Type{T} = BigInt, G::Group) where T

Return the order of GG as an instance of T. If GG is of infinite order, an InfiniteOrderError exception will be thrown. Use is_finite(G) to avoid this kind of exception. If the order does not fit into type T, an InexactError exception will be thrown.

source
order(::Type{T} = BigInt, g::GroupElem) where T

Return the order of gg as an instance of T. If gg is of infinite order, an InfiniteOrderError exception will be thrown. Use is_finite_order(G) to avoid this kind of exception. If the order does not fit into type T, an InexactError exception will be thrown.

source
order(K::AbsSimpleNumField, A::ZZMatrix, check::Bool = true) -> AbsSimpleNumFieldOrder

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

source
order(I::NumFieldOrderIdeal) -> AbsSimpleNumFieldOrder

Returns the order of II.

source
order(A::AbstractAssociativeAlgebra{<: NumFieldElem}, M::PMat{<: NumFieldElem, T})
  -> AlgAssRelOrd

Returns the order of AA with basis pseudo-matrix MM.

source
order(::Type{T} = ZZRingElem, c::CycleType) where T <: IntegerUnion

Return the order of the permutations with cycle structure c.

Examples

julia> g = symmetric_group(3);

julia> all(x -> order(cycle_structure(x)) == order(x), gens(g))
true
source
order(W::WeylGroup) -> ZZRingELem
order(::Type{T}, W::WeylGroup) where {T} -> T

Return the order of W.

If W is infinite, an InfiniteOrderError exception will be thrown. Use is_finite(::WeylGroup) to check this prior to calling this function if in doubt.

source
order(x::WeylGroupElem) -> ZZRingELem
order(::Type{T}, x::WeylGroupElem) where {T} -> T

Return the order of x, i.e. the smallest natural number n such that is_one(x^n).

If x is of infinite order, an InfiniteOrderError exception will be thrown. Use is_finite_order(::WeylGroupElem) to check this prior to calling this function if in doubt.

source
orderMethod
order(a::AbsNumFieldOrderFractionalIdeal) -> AbsNumFieldOrder

The order that was used to define the ideal aa.

source
orderMethod
order(::Type{T} = BigInt, G::Group) where T

Return the order of GG as an instance of T. If GG is of infinite order, an InfiniteOrderError exception will be thrown. Use is_finite(G) to avoid this kind of exception. If the order does not fit into type T, an InexactError exception will be thrown.

source
order(::Type{T} = BigInt, g::GroupElem) where T

Return the order of gg as an instance of T. If gg is of infinite order, an InfiniteOrderError exception will be thrown. Use is_finite_order(G) to avoid this kind of exception. If the order does not fit into type T, an InexactError exception will be thrown.

source
order(K::AbsSimpleNumField, A::ZZMatrix, check::Bool = true) -> AbsSimpleNumFieldOrder

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

source
order(I::NumFieldOrderIdeal) -> AbsSimpleNumFieldOrder

Returns the order of II.

source
order(A::AbstractAssociativeAlgebra{<: NumFieldElem}, M::PMat{<: NumFieldElem, T})
  -> AlgAssRelOrd

Returns the order of AA with basis pseudo-matrix MM.

source
order(::Type{T} = ZZRingElem, c::CycleType) where T <: IntegerUnion

Return the order of the permutations with cycle structure c.

Examples

julia> g = symmetric_group(3);

julia> all(x -> order(cycle_structure(x)) == order(x), gens(g))
true
source
order(W::WeylGroup) -> ZZRingELem
order(::Type{T}, W::WeylGroup) where {T} -> T

Return the order of W.

If W is infinite, an InfiniteOrderError exception will be thrown. Use is_finite(::WeylGroup) to check this prior to calling this function if in doubt.

source
order(x::WeylGroupElem) -> ZZRingELem
order(::Type{T}, x::WeylGroupElem) where {T} -> T

Return the order of x, i.e. the smallest natural number n such that is_one(x^n).

If x is of infinite order, an InfiniteOrderError exception will be thrown. Use is_finite_order(::WeylGroupElem) to check this prior to calling this function if in doubt.

source
orderMethod
order(a::RelNumFieldOrderFractionalIdeal) -> RelNumFieldOrder

Returns the order of aa.

source
nfMethod
nf(x::NumFieldOrderIdeal) -> AbsSimpleNumField

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

source
basisMethod
basis(A::AbsNumFieldOrderIdeal) -> Vector{AbsSimpleNumFieldOrderElem}

Returns the basis of AA.

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

Returns the Z\mathbf Z-basis of II.

source
lll_basisMethod
lll_basis(I::NumFieldOrderIdeal) -> Vector{NumFieldElem}

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

source
basis_matrixMethod
basis_matrix(A::AbsNumFieldOrderIdeal) -> ZZMatrix

Returns the basis matrix of AA.

source
basis_mat_invMethod
basis_mat_inv(A::GenOrdIdl) -> FakeFracFldMat

Return the inverse of the basis matrix of AA.

source
has_princ_gen_specialMethod
has_princ_gen_special(A::AbsNumFieldOrderIdeal) -> Bool

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

source
principal_generatorMethod
principal_generator(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderElem

For a principal ideal AA, find a generator.

source
principal_generator_fac_elemMethod
principal_generator_fac_elem(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> FacElem{AbsSimpleNumFieldElem, number_field}

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

source
minimumMethod
minimum(A::AbsNumFieldOrderIdeal) -> ZZRingElem

Returns the smallest non-negative element in AZA \cap \mathbf Z.

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

Returns the ideal AOA \cap O where OO is the maximal order of the coefficient ideals of AA.

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

Returns the ideal AOA \cap O where OO is the maximal order of the coefficient ideals of AA.

source
minimumMethod
minimum(A::AbsNumFieldOrderIdeal) -> ZZRingElem

Returns the smallest non-negative element in AZA \cap \mathbf Z.

source
has_minimumMethod
has_minimum(A::AbsNumFieldOrderIdeal) -> Bool

Returns whether AA knows its minimum.

source
normMethod
norm(A::AbsNumFieldOrderIdeal) -> ZZRingElem

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

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

Returns the norm of aa.

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

Returns the norm of aa.

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

Returns the norm of aa considered as an (possibly fractional) ideal of OO.

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

Returns the norm of aa considered as an (possibly fractional) ideal of OO.

source
has_normMethod
has_norm(A::AbsNumFieldOrderIdeal) -> Bool

Returns whether AA knows its norm.

source
idempotentsMethod
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_primeMethod
is_prime(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Bool

Returns whether AA is a prime ideal.

source
is_prime_knownMethod
is_prime_known(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Bool

Returns whether AA knows if it is prime.

source
is_ramifiedMethod
is_ramified(O::AbsSimpleNumFieldOrder, p::Int) -> Bool

Returns whether the integer pp is ramified in O\mathcal O. It is assumed that pp is prime.

source
ramification_indexMethod
ramification_index(P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Int

The ramification index of the prime-ideal PP.

source
degreeMethod
degree(P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Int

The inertia degree of the prime-ideal PP.

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

Computes the p\mathfrak p-adic valuation of aa, that is, the largest ii such that aa is contained in pi\mathfrak p^i.

source
valuationMethod
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\mathfrak p-adic valuation of aa, that is, the largest ii such that aa is contained in pi\mathfrak p^i.

source
valuationMethod
valuation(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem

Computes the p\mathfrak p-adic valuation of AA, that is, the largest ii such that AA is contained in pi\mathfrak p^i.

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

Computes the p\mathfrak p-adic valuation of aa, that is, the largest ii such that aa is contained in pi\mathfrak p^i.

source
valuationMethod
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\mathfrak p-adic valuation of aa, that is, the largest ii such that aa is contained in pi\mathfrak p^i.

source
valuationMethod
valuation(A::AbsNumFieldOrderFractionalIdeal, p::AbsNumFieldOrderIdeal)

The valuation of AA at pp.

source
idempotentsMethod
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

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

The quotient ring O/IO/I as a ring together with the projection M:OO/IM: O\to O/I. The pointwise inverse of MM implements a preimage/ lift function. In general this will not be a section as it will not be linear.

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

The quotient ring OO modulo II as a new ring.

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

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

source
modMethod
mod(x::AbsSimpleNumFieldOrderElem, I::AbsNumFieldOrderIdeal)

Returns the unique element yy of the ambient order of xx with xymodIx \equiv y \bmod I and the following property: If a1,,adZ1a_1,\dotsc,a_d \in \mathbf{Z}_{\geq 1} are the diagonal entries of the unique HNF basis matrix of II and (b1,,bd)(b_1,\dotsc,b_d) is the coefficient vector of yy, then 0bi<ai0 \leq b_i < a_i for 1id1 \leq i \leq d.

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

Find xx such that xr1modi1x \equiv r_1 \bmod i_1 and xr2modi2x \equiv r_2 \bmod i_2 using idempotents.

source
euler_phiMethod
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_groupMethod
multiplicative_group(Q::AbsSimpleNumFieldOrderQuoRing) -> FinGenAbGroup, Map{FinGenAbGroup, AbsSimpleNumFieldOrderQuoRing}
unit_group(Q::AbsSimpleNumFieldOrderQuoRing) -> FinGenAbGroup, Map{FinGenAbGroup, AbsSimpleNumFieldOrderQuoRing}

Returns the unit group of QQ as an abstract group AA and an isomorphism map f ⁣:AQ×f \colon A \to Q^\times.

source
multiplicative_group_generatorsMethod
multiplicative_group_generators(Q::AbsSimpleNumFieldOrderQuoRing) -> Vector{AbsSimpleNumFieldOrderQuoRingElem}

Return a set of generators for Q×Q^\times.

source