|
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
The relation method, outlined in the previous section, can also be used
for unit group calculations. Therefore,
unit group calculations including those triggered as a
side effect may cause the creation of factor bases and relations.
Other methods such as Dirichlet's method are also implemented which
may be faster in certain circumstances.
Descriptions of the algorithms can be found in [PZ89], (pp. 343--344),
and in [Poh93].
These methods will only work for absolute extensions.
In general, the unit group related functions support a verbose flag
UnitGroup up to a maximum of 6.
MultiplicativeGroup(O) : RngOrd -> GrpAb, Map
UnitGroup(K) : FldNum -> GrpAb, Map
MultiplicativeGroup(K) : FldNum -> GrpAb, Map
Al: MonStgElt Default: "Automatic"
SetVerbose("UnitGroup", n): Maximum: 6
Given an order O in a number field, this function returns
an (abstract) abelian group U, as well as a bijection m
between U and the units of the order. The unit group consists of the torsion
subgroup, generated by the image m(U.1) and a free part,
generated in O by the images m(U.i) for 2≤i≤r1 + r2.
If the argument to this function is a number field K, the unit group
of its maximal order is returned. Note that the maximal order may
have to be determined first.
The parameter Al can be used to specify an
algorithm. It should be one of "Automatic",
(default, a choice will be made for the user)
"ClassGroup",
"Dirichlet",
"Mixed" (the best known Dirichlet method),
"Relation"
or "Short" (which is a variation of "Mixed").
In the case of real quadratic fields, a continued fraction
algorithm is available, "ContFrac".
For a (possibly non-maximal) order O in some absolute field K,
return the unitgroup of O as a subgroup of the unit group of the
maximal order of O. The algorithm and its implementatio is due to
Klüners and Pauli, [PK05].
TorsionUnitGroup(K) : FldNum -> GrpAb, Map
The torsion subgroup of the unit group of the order O, or, in case of
a number field K, of its maximal order O. The torsion subgroup
is returned as an abelian group T, together with a map
m from the group to the order O. The torsion subgroup will be cyclic,
and is generated by m(T.1).
IndependentUnits(K) : FldNum -> GrpAb, Map
Al: MonStgElt Default: "Automatic"
SetVerbose("UnitGroup", n): Maximum: 6
Given an order O, this function returns a sequence of independent
units; they generate a subgroup of finite index in the full unit
group. Given a number field K, the function is applied to the maximal
order of K. The function returns an abelian group generated by
the independent units as well as a homomorphism from the group to the
order.
The parameter Al can be used to specify an
algorithm. It should be one of "Automatic",
"ClassGroup",
"Dirichlet",
"Mixed" (the best known Dirichlet-like method),
"Relation".
or "Short" (which is a variation of "Mixed").
In the case of real quadratic fields, a continued fraction
algorithm is available, "ContFrac".
pFundamentalUnits(K, p) : FldNum, RngIntElt -> GrpAb, Map
Al: MonStgElt Default: "Automatic"
SetVerbose("UnitGroup", n): Maximum: 6
Given an order O in a number field, this function returns
an (abstract) abelian group U, as well as a map m
from U to the order.
U will be a subgroup (of finite index) of the unit group G such that p
does not divide the index (G:U)
where p is the prime number given.
If a field K is given rather than an order, the above is computed for
the maximal order of K.
The parameter Al has the same options as for UnitGroup.
MergeUnits(O, a) : RngOrd, RngOrdElt -> BoolElt
SetVerbose("UnitGroup", n): Maximum: 6
For an order O or a number field with maximal order O
and a unit a∈O, add the unit to the already
known subgroup of UO that is stored in O.
Returns true if and only if the rank of the currently known unit group of
O or K increases when a is merged with it.
UnitRank(K) : FldAlg -> RngIntElt
Return the unit rank of the ring of integers O of a number field K.
In our field defined by x4 - 420 * x2 + 40000, we obtain the
class and unit groups as follows.
> R<x> := PolynomialRing(Integers());
> f := x^4 - 420*x^2 + 40000;
> K<y> := NumberField(f);
> C := ClassGroup(K);
> C;
Abelian Group of order 1
> U := UnitGroup(K);
> U;
Abelian Group isomorphic to Z/2 + Z + Z + Z
Defined on 4 generators
Relations:
2*U.1 = 0
> T := TorsionUnitGroup(K);
> T;
Abelian Group isomorphic to Z/2
Defined on 1 generator
Relations:
2*T.1 = 0
An element x of an order O is an exceptional unit if both x and x - 1
are units in O. This function returns true if and only if the order
element u is an
exceptional unit.
If u is an exceptional unit of an order O, then all of the units
u1=u, u2=(1/u), u3=1 - u, u4=(1/(1 - u)),
u5=((u - 1)/u), u6=(u/(u - 1)) are exceptional.
The set Ω(u) formed by u1, ..., u6 is called the orbit
of u. Usually it will have 6 elements.
This function returns a sequence containing the elements of Ω(u).
SetVerbose("UnitEq", n): Maximum: 5
This function returns a sequence S of units of the order O such that any
exceptional unit u of O is either in S or is in the orbit of
some element of S.
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|