Ideals
(Integral) ideals in orders are always free
For ideals in maximal orders
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
ideal(O::AbsSimpleNumFieldOrder, a::ZZRingElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, a::Integer) -> AbsNumFieldOrderIdealReturns the ideal of
ideal Method
ideal(O::AbsSimpleNumFieldOrder, M::ZZMatrix; check::Bool = false, M_in_hnf::Bool = false) -> AbsNumFieldOrderIdealCreates the ideal of check is set, then it is checked whether M_in_hnf is set, then it is assumed that
ideal Method
ideal(O::AbsSimpleNumFieldOrder, x::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdealCreates the principal ideal
ideal Method
ideal(O::AbsSimpleNumFieldOrder, x::ZZRingElem, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, x::Integer, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdealCreates the ideal
ideal Method
ideal(O::AbsSimpleNumFieldOrder, x::ZZRingElem, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, x::Integer, y::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdealCreates the ideal
ideal Method
ideal(O::AbsSimpleNumFieldOrder, a::ZZRingElem) -> AbsNumFieldOrderIdeal
ideal(O::AbsSimpleNumFieldOrder, a::Integer) -> AbsNumFieldOrderIdealReturns the ideal of
ideal Method
ideal(O::AbsSimpleNumFieldOrder, x::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdealCreates the principal ideal
* Method
*(O::AbsSimpleNumFieldOrder, x::AbsSimpleNumFieldOrderElem) -> AbsNumFieldOrderIdeal
*(x::AbsNumFieldOrderElem, O::AbsNumFieldOrder) -> AbsNumFieldOrderIdealReturns the principal ideal
factor Method
factor(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Dict{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, Int}Computes the prime ideal factorization lp = factor_dict(A), then keys(lp) are the prime ideal divisors of lp[P] is the keys(lp).
factor Method
factor(I::AbsNumFieldOrderIdealSet{AbsSimpleNumField, AbsSimpleNumFieldElem}, a::AbsSimpleNumFieldElem) -> Dict{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, ZZRingElem}Factors the principal ideal generated by
coprime_base Method
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
Arithmetic
All the usual operations are supported:
==,+,*divexact,divideslcm,gcdin
intersect Method
intersect(x::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, y::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}Returns
colon Method
colon(a::AbsNumFieldOrderIdeal, b::AbsNumFieldOrderIdeal) -> AbsSimpleNumFieldOrderFractionalIdealThe ideal
in Method
in(x::NumFieldOrderElem, y::NumFieldOrderIdeal)
in(x::NumFieldElem, y::NumFieldOrderIdeal)
in(x::ZZRingElem, y::NumFieldOrderIdeal)Returns whether
is_power Method
is_power(A::AbsNumFieldOrderIdeal, n::Int) -> Bool, AbsNumFieldOrderIdeal
is_power(A::AbsSimpleNumFieldOrderFractionalIdeal, n::Int) -> Bool, AbsSimpleNumFieldOrderFractionalIdealComputes, if possible, an ideal true and
is_power Method
is_power(I::AbsNumFieldOrderIdeal) -> Int, AbsNumFieldOrderIdeal
is_power(a::AbsSimpleNumFieldOrderFractionalIdeal) -> Int, AbsSimpleNumFieldOrderFractionalIdealWrites
is_invertible Method
is_invertible(A::AbsNumFieldOrderIdeal) -> Bool, AbsSimpleNumFieldOrderFractionalIdealReturns true and an inverse of false and an ideal
isone Method
isone(A::AbsNumFieldOrderIdeal) -> Bool
is_unit(A::AbsNumFieldOrderIdeal) -> BoolTests if
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_group Method
class_group(O::AbsSimpleNumFieldOrder; bound = -1,
redo = false,
GRH = true) -> FinGenAbGroup, MapReturns a group
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: Iffalse, the correctness of the result does not depend on GRH.
narrow_class_group Method
narrow_class_group(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, MapComputes the narrow (or strict) class group of
picard_group Method
picard_group(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, MapClassGrpReturns the Picard group of
ring_class_group Method
ring_class_group(O::AbsNumFieldOrder)The ring class group (Picard group) of
julia> k, a = wildanger_field(3, 13);
julia> zk = maximal_order(k);
julia> c, mc = class_group(zk)
(Z/9, Class group 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_principal Method
is_principal(A::AbsSimpleNumFieldOrderIdeal) -> Bool
is_principal(A::AbsSimpleNumFieldOrderFractionalIdeal) -> BoolTests if
is_principal_with_data Method
is_principal_with_data(A::AbsSimpleNumFieldOrderIdeal) -> Bool, AbsSimpleNumFieldOrderElem
is_principal_with_data(A::AbsSimpleNumFieldOrderFractionalIdeal) -> Bool, AbsSimpleNumFieldElemTests if
is_principal_fac_elem Method
is_principal_fac_elem(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> Bool, FacElem{AbsSimpleNumFieldElem, number_field}Tests if
power_class Method
power_class(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, e::ZZRingElem) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}Computes a (small) ideal in the same class as
power_product_class Method
power_product_class(A::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}, e::Vector{ZZRingElem}) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}Computes a (small) ideal in the same class as
power_reduce Method
power_reduce(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, e::ZZRingElem) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, FacElem{AbsSimpleNumFieldElem}Computes
class_group_ideal_relation Method
class_group_ideal_relation(I::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, c::ClassGrpCtx) -> AbsSimpleNumFieldElem, SRow{ZZRingElem}Finds a number field element
factor_base_bound_grh Method
factor_base_bound_grh(O::AbsSimpleNumFieldOrder) -> IntReturns an integer
factor_base_bound_bach Method
factor_base_bound_bach(O::AbsSimpleNumFieldOrder) -> IntUse the theorem of Bach to find
prime_ideals_up_to Function
prime_ideals_up_to(O::AbsSimpleNumFieldOrder,
B::Int;
degree_limit::Int = 0, index_divisors::Bool = true) -> Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}Computes the prime ideals
If degree_limit is a nonzero integer
prime_ideals_up_to(O::AbsSimpleNumFieldOrder,
B::Int;
complete::Bool = false,
degree_limit::Int = 0,
F::Function,
bad::ZZRingElem)Computes the prime ideals
If degree_limit is a nonzero integer
The function bad such that
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
torsion_units Method
torsion_units(O::AbsSimpleNumFieldOrder) -> Vector{AbsSimpleNumFieldOrderElem}Given an order
torsion_unit_group Method
torsion_unit_group(O::AbsSimpleNumFieldOrder) -> GrpAb, MapGiven an order
torsion_units_generator Method
torsion_units_generator(O::AbsSimpleNumFieldOrder) -> AbsSimpleNumFieldOrderElemGiven an order
torsion_units_gen_order Method
torsion_units_gen_order(O::AbsSimpleNumFieldOrder) -> AbsSimpleNumFieldOrderElemGiven an order
unit_group Method
unit_group(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, MapReturns a group [ f(U[1+i]) for i in 1:unit_group_rank(O) ]. f(U[1]) will give a generator for the torsion subgroup.
unit_group_fac_elem Method
unit_group_fac_elem(O::AbsSimpleNumFieldOrder) -> FinGenAbGroup, MapReturns a group [ 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.
sunit_group Method
sunit_group(I::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}) -> GrpAb, MapFor an array
sunit_group_fac_elem Method
sunit_group_fac_elem(I::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}) -> GrpAb, MapFor an array
sunit_mod_units_group_fac_elem Method
sunit_mod_units_group_fac_elem(I::Vector{AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}}) -> GrpAb, MapFor an array
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^2Miscellaneous
order Method
order(K::AbsSimpleNumField, A::ZZMatrix, check::Bool = true) -> AbsSimpleNumFieldOrderReturns the order which has basis matrix check is set, it is checked whether
order(I::NumFieldOrderIdeal) -> AbsSimpleNumFieldOrderReturns the order of
order(A::AbstractAssociativeAlgebra{<: NumFieldElem}, M::PMat{<: NumFieldElem, T})
-> AlgAssRelOrdReturns the order of
order Method
order(a::AbsNumFieldOrderFractionalIdeal) -> AbsNumFieldOrderThe order that was used to define the ideal
order Method
order(K::AbsSimpleNumField, A::ZZMatrix, check::Bool = true) -> AbsSimpleNumFieldOrderReturns the order which has basis matrix check is set, it is checked whether
order(I::NumFieldOrderIdeal) -> AbsSimpleNumFieldOrderReturns the order of
order(A::AbstractAssociativeAlgebra{<: NumFieldElem}, M::PMat{<: NumFieldElem, T})
-> AlgAssRelOrdReturns the order of
order Method
order(a::RelNumFieldOrderFractionalIdeal) -> RelNumFieldOrderReturns the order of
nf Method
nf(x::NumFieldOrderIdeal) -> AbsSimpleNumFieldReturns the number field, of which
basis Method
basis(A::AbsNumFieldOrderIdeal) -> Vector{AbsSimpleNumFieldOrderElem}Returns the basis of
basis(I::AbsNumFieldOrderFractionalIdeal) -> Vector{AbsSimpleNumFieldElem}Returns the
lll_basis Method
lll_basis(I::NumFieldOrderIdeal) -> Vector{NumFieldElem}A basis for
basis_matrix Method
basis_matrix(A::AbsNumFieldOrderIdeal) -> ZZMatrixReturns the basis matrix of
basis_mat_inv Method
basis_mat_inv(A::GenOrdIdl) -> FakeFracFldMatReturn the inverse of the basis matrix of
has_princ_gen_special Method
has_princ_gen_special(A::AbsNumFieldOrderIdeal) -> BoolReturns whether
principal_generator Method
principal_generator(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderElemFor a principal ideal
principal_generator_fac_elem Method
principal_generator_fac_elem(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> FacElem{AbsSimpleNumFieldElem, number_field}For a principal ideal
minimum Method
minimum(A::AbsNumFieldOrderIdeal) -> ZZRingElemReturns the smallest non-negative element in
minimum(A::RelNumFieldOrderIdeal) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}
minimum(A::RelNumFieldOrderIdeal) -> RelNumFieldOrderIdealReturns the ideal
minimum Method
minimum(A::RelNumFieldOrderIdeal) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}
minimum(A::RelNumFieldOrderIdeal) -> RelNumFieldOrderIdealReturns the ideal
minimum Method
minimum(A::AbsNumFieldOrderIdeal) -> ZZRingElemReturns the smallest non-negative element in
has_minimum Method
has_minimum(A::AbsNumFieldOrderIdeal) -> BoolReturns whether
norm Method
norm(A::AbsNumFieldOrderIdeal) -> ZZRingElemReturns the norm of
norm(a::RelNumFieldOrderIdeal) -> AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}Returns the norm of
norm(a::RelNumFieldOrderFractionalIdeal{T, S}) -> SReturns the norm of
norm(a::AlgAssAbsOrdIdl, O::AlgAssAbsOrd; copy::Bool = true) -> QQFieldElemReturns the norm of
norm(a::AlgAssRelOrdIdl{S, T, U}, O::AlgAssRelOrd{S, T, U}; copy::Bool = true)
where { S, T, U } -> TReturns the norm of
idempotents Method
idempotents(x::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, y::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderElem, AbsSimpleNumFieldOrderElemReturns 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.
sourceis_prime Method
is_prime(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> BoolReturns whether
is_prime_known Method
is_prime_known(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> BoolReturns whether
is_ramified Method
is_ramified(O::AbsSimpleNumFieldOrder, p::Int) -> BoolReturns whether the integer
ramification_index Method
ramification_index(P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> IntThe ramification index of the prime-ideal
degree Method
degree(P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> IntThe inertia degree of the prime-ideal
valuation Method
valuation(a::NumFieldElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElemComputes the
valuation Method
valuation(a::AbsSimpleNumFieldElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem
valuation(a::AbsSimpleNumFieldOrderElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem
valuation(a::ZZRingElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElemComputes the
valuation Method
valuation(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElemComputes the
valuation Method
valuation(a::Integer, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElemComputes the
valuation Method
valuation(a::AbsSimpleNumFieldElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem
valuation(a::AbsSimpleNumFieldOrderElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElem
valuation(a::ZZRingElem, p::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElemComputes the
valuation Method
valuation(A::AbsNumFieldOrderFractionalIdeal, p::AbsNumFieldOrderIdeal)The valuation of
idempotents Method
idempotents(x::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, y::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderElem, AbsSimpleNumFieldOrderElemReturns 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.
sourceQuotient Rings
quo Method
quo(O::AbsSimpleNumFieldOrder, I::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderQuoRing, Map
quo(O::AlgAssAbsOrd, I::AlgAssAbsOrdIdl) -> AbsOrdQuoRing, MapThe quotient ring
residue_ring Method
residue_ring(O::AbsSimpleNumFieldOrder, I::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderQuoRing
residue_ring(O::AlgAssAbsOrd, I::AlgAssAbsOrdIdl) -> AbsOrdQuoRingThe quotient ring
residue_field Method
residue_field(O::AbsSimpleNumFieldOrder, P::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, check::Bool = true) -> Field, MapReturns the residue field of the prime ideal check is true, the ideal is checked for being prime.
mod Method
mod(x::AbsSimpleNumFieldOrderElem, I::AbsNumFieldOrderIdeal)Returns the unique element
crt Method
crt(r1::AbsSimpleNumFieldOrderElem, i1::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}, r2::AbsSimpleNumFieldOrderElem, i2::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> AbsSimpleNumFieldOrderElemFind idempotents.
euler_phi Method
euler_phi(A::AbsNumFieldOrderIdeal{AbsSimpleNumField, AbsSimpleNumFieldElem}) -> ZZRingElemThe ideal version of the totient function returns the size of the unit group of the residue ring modulo the ideal.
sourcemultiplicative_group Method
multiplicative_group(Q::AbsSimpleNumFieldOrderQuoRing) -> FinGenAbGroup, Map{FinGenAbGroup, AbsSimpleNumFieldOrderQuoRing}
unit_group(Q::AbsSimpleNumFieldOrderQuoRing) -> FinGenAbGroup, Map{FinGenAbGroup, AbsSimpleNumFieldOrderQuoRing}Returns the unit group of
multiplicative_group_generators Method
multiplicative_group_generators(Q::AbsSimpleNumFieldOrderQuoRing) -> Vector{AbsSimpleNumFieldOrderQuoRingElem}Return a set of generators for
