|
Let S be a definite quaternion order over Z, Fq[X] with q odd,
or a number ring. In the first two cases, the unit group of S is finite
and can be read off any reduced Gram matrix of S. If the base ring of
S is some number ring R, then an explicit description of the finite
quotient S * /R * is given in [Vig76].
NormOneGroup(S) : AlgQuatOrd -> GrpAb, Map
ModScalars: BoolElt Default: false
Returns a group G isomorphic to the group S1 of elements in
S with reduced norm 1 (unless ModScalars is set,
in which case G is isomorphic to S1 modulo {∓ 1}).
The second object returned is a map from G to S expressing the isomorphism.
Units(S) : AlgAssVOrd -> SeqEnum
This intrinsic computes the set of units S * for the definite order S.
When the base ring of S is Z or Fq[X], the returned sequence contains
all units of S; when the base field is a number field, the returned sequence
contains representatives modulo the unit group of the base ring
(since the unit group is infinite in general).
UnitGroup(S) : AlgQuatOrd[RngInt] -> GrpPerm, Map
MultiplicativeGroup(S) : AlgQuatOrd[RngUPol] -> GrpAb, Map
UnitGroup(S) : AlgQuatOrd[RngUPol] -> GrpAb, Map
MultiplicativeGroup(S) : AlgAssVOrd[RngOrd] -> GrpPerm, Map
UnitGroup(S) : AlgAssVOrd[RngOrd] -> GrpPerm, Map
This intrinsic computes the unit group S * of the definite quaternion
order S. The function returns an abstract group G, and a map from
G to S. When the base ring of S is Z or Fq[X], G represents
the full group of units of S; when the base field is a number field, G
represents the unit group of S modulo the unit group of the base ring
(since the unit group is infinite in general).
The following example illustrates the unit group computation for an
order in a definite quaternion algebra over Q.
> A := QuaternionAlgebra< RationalField() | -1, -1 >;
> S1 := MaximalOrder(A);
> S2 := QuaternionOrder(A,2);
> G1, h1 := UnitGroup(S1);
> #G1;
24
> [ A | h1(g) : g in G1 ];
[ 1, -1, -j, -k, i, -1/2 + 1/2*i - 1/2*j - 1/2*k, 1/2 + 1/2*i - 1/2*j + 1/2*k,
-1/2 - 1/2*i - 1/2*j + 1/2*k, -1/2 + 1/2*i + 1/2*j + 1/2*k, 1/2 - 1/2*i - 1/2*j
- 1/2*k, 1/2 + 1/2*i + 1/2*j - 1/2*k, 1/2 - 1/2*i + 1/2*j + 1/2*k, -1/2 - 1/2*i
+ 1/2*j - 1/2*k, 1/2 - 1/2*i + 1/2*j - 1/2*k, -1/2 + 1/2*i + 1/2*j - 1/2*k, 1/2
+ 1/2*i - 1/2*j - 1/2*k, -1/2 - 1/2*i - 1/2*j - 1/2*k, 1/2 + 1/2*i + 1/2*j +
1/2*k, -1/2 - 1/2*i + 1/2*j + 1/2*k, -1/2 + 1/2*i - 1/2*j + 1/2*k, 1/2 - 1/2*i -
1/2*j + 1/2*k, k, -i, j ]
> G2, h2 := UnitGroup(S2);
> #G2;
8
> [ A | h2(g) : g in G2 ];
[ 1, -1, -j, j, k, -k, -i, i ]
The unit groups of orders in indefinite quaternion algebras A are
infinite arithmetic groups, which are twisted analogues of the groups
SL 2(Z) and their families of subgroups. These are studied in
relation to their actions on the upper half complex plane, via an
embedding in GL 2(R) provided by some isomorphism A tensor R isomorphic to M 2(R).
Now we exhibit unit group computations over a number ring.
> P<x> := PolynomialRing(Rationals());
> F := NumberField(x^3-3*x-1);
> Z_F := MaximalOrder(F);
> Foo := InfinitePlaces(F);
We use SetSeed since the following line makes random choices.
> SetSeed(1);
> A := QuaternionAlgebra(ideal<Z_F | 2>, Foo);
> IsDefinite(A);
true
> O := MaximalOrder(A);
> U, h := UnitGroup(O);
> U;
Permutation group U acting on a set of cardinality 12
Order = 12 = 2^2 * 3
Id(U)
(1, 2, 4)(3, 6, 7)(5, 9, 10)(8, 12, 11)
(1, 3)(2, 5)(4, 8)(6, 11)(7, 9)(10, 12)
> #Units(O);
12
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|