[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Unit Groups

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.

UnitGroup(O) : RngOrd -> GrpAb, Map
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".

UnitGroupAsSubgroup(O) : RngOrd -> GrpAb
For a (possibly non-maximal) order O in some absolute field K, return the unit group 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(O) : RngOrd -> GrpAb, Map
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(O) : RngOrd -> GrpAb, Map
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(O, p) : RngOrd, RngIntElt -> GrpAb, Map
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(K, a) : FldNum, FldNumElt -> BoolElt
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(O) : RngOrd -> RngIntElt
UnitRank(K) : FldAlg -> RngIntElt
Return the unit rank of the ring of integers O of a number field K.

Example RngOrd_UnitGroup (H37E21)

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

IsExceptionalUnit(u) : RngOrdElt -> BoolElt
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.
ExceptionalUnitOrbit(u) : RngOrdElt -> [ RngOrdElt ]
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).
ExceptionalUnits(O) : RngOrd -> [ RngOrdElt ]
    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]

Version: V2.19 of Wed Apr 24 15:09:57 EST 2013