|
The right (or left) ideals of an R-order O in a quaternion algebra A
defined over a number field fall into finitely many isomorphism classes.
Already, for the case of number rings, it is a computationally difficult
problem to compute the class group, and due to the noncommutativity of
quaternion algebras, the problem of enumerating ideal classes of
quaternion orders is even more difficult because this set does not have
the structure of a group.
All orders in this section are required to be Eichler. The reader
should recall that this includes the maximal orders.
The algorithms underpinning the intrinsics described in this section,
in particular, those for determining ideal classes, are described in
[KV10]. The methods depend on whether A is definite or
indefinite. For a definite algebra, we use a variation of Kneser's
neighbouring method together with Eichler's mass formula
(see [Vig80, Chapter 5] and [DG88]) to construct
sufficient ideals to represent all ideal classes. We then test if two
right (or left) ideals I, J are isomorphic (Section Isomorphisms of Ideals).
For an indefinite quaternion algebra, we use a theorem of Eichler
[Rei03, Th. 35.14] which
states that the reduced norm gives rise to a bijection of sets between
the class groups of the order and the number ring. (Over Z or Fq[X],
therefore, every ideal of an indefinite quaternion order is principal.)
We may compute
representative ideals I of O whose reduced norm is in a specified
ideal class. We then reduce the problem of testing for an isomorphism
I isomorphic to J between two ideals to the similar problem over R. Here,
the problem of explicitly computing such an isomorphism is much less
difficult, as an order (or ideal) will have infinitely many elements
of bounded norm, and in most cases a search amongst reduced bases will
find a desired element.
Ideals of quaternion orders belong to the types AlgQuatOrdIdl and
AlgAssVOrdIdl according as to whether the order O is defined over
Z or Fq[X] (both of type AlgQuatOrd) or over a number ring
(of type AlgAssVOrd). For more on the constructions and functions
for ideals of the latter type, see Section Orders.
lideal<S | X> : AlgQuatOrd, [AlgQuatElt] -> AlgQuatOrdIdl
RightIdeal(S, X) : AlgQuatOrd, [AlgQuatElt] -> AlgQuatOrdIdl
rideal<S | X> : AlgQuatOrd, [AlgQuatElt] -> AlgQuatOrd
ideal<S | X> : AlgQuatOrd, [AlgQuatElt] -> AlgQuatOrdIdl
These intrinsics construct a left, right or two-sided ideal of the
order S generated by the sequence X, which should contain elements
that are coercible into the algebra of S.
In the case of the constructors lideal< | > and rideal< | >,
the right hand side may also be a matrix or pseudo-matrix giving the
basis of the ideal with respect to the basis of S.
Given a quaternion order S over Z or Fq[X], the function
returns the unique two-sided (integral) prime ideal P of S over
the prime p of Z or Fq[X].
If p exactly divides the discriminant of S, then P properly
contains pS and need not be principal, and otherwise P is equal
to pS.
CommutatorIdeal(S) : AlgAssVOrd -> AlgAssVOrdIdl
The two-sided ideal of the quaternion order S
generated by elements of the form xy - yx.
MaximalLeftIdeals(O, p) : AlgAssVOrd, RngOrdIdl -> [AlgAssVOrdIdl]
MaximalRightIdeals(O, p) : AlgQuatOrd, RngElt -> [AlgQuatOrdIdl]
MaximalRightIdeals(O, p) : AlgAssVOrd, RngOrdIdl -> [AlgAssVOrdIdl]
The integral ideals of norm p with left or right order O.
We demonstrate the construction of the 2-sided prime ideals and their
relationship with the commutator ideal.
> S := QuaternionOrder(2*5*11);
> P := PrimeIdeal(S, 2);
> I := ideal< S | [2] cat [ x*y-y*x : x, y in Basis(S) ] >;
> P eq I;
true
> Q := PrimeIdeal(S, 5);
> R := PrimeIdeal(S, 11);
> P*Q*R eq CommutatorIdeal(S);
true
By way of explanation, we note that the composition of ideals is
well-defined, since each of these ideals is a 2-sided ideal
for S, that is, a left ideal whose right order is also S.
The collection of all prime ideals over the ramified primes of a
maximal order forms an elementary 2-abelian class group, and
the commutator ideal is the product of these prime ideals.
First we create an integral ideal I of norm 2.
> QQ:= Rationals();
> A<i,j> := QuaternionAlgebra< QQ | -1, -11 >;
> S := MaximalOrder(A);
> P<x> := PolynomialRing(QQ);
> P ! MinimalPolynomial(i);
x^2 + 1
> I := lideal< S | 2, 1+i >;
> Norm(I);
2
> I in MaximalLeftIdeals(S, 2);
true
We now examine the basis of the ideal I.
> Basis(I);
[ 2, 1 + i, i + k, 3/2 + 1/2*i + 1/2*j + 1/2*k ]
> [ Eltseq(x) : x in Basis(I) ];
[
[ 2, 0, 0, 0 ],
[ 1, 1, 0, 0 ],
[ 0, 1, 0, 1 ],
[ 3/2, 1/2, 1/2, 1/2 ]
]
> BasisMatrix(I, A);
[ 2 0 0 0]
[ 1 1 0 0]
[ 0 1 0 1]
[3/2 1/2 1/2 1/2]
If the ideal I is printed, the rational coordinates with
respect to the basis of the quaternion order S will be shown,
We can get this base change matrix if we call BasisMatrix
with no additional parameters.
> I;
Left Ideal with basis Pseudo-matrix over Integer Ring
[2 0 0 0]
[1 1 0 0]
[0 0 2 0]
[1 0 1 1]
> BasisMatrix(I);
[2 0 0 0]
[1 1 0 0]
[0 0 2 0]
[1 0 1 1]
LeftOrder(I) : AlgAssVOrdIdl[RngOrd] -> AlgAssVOrd
Given an ideal I of a quaternion order defined over Z, Fq[X]
or a number ring, this function returns the left order of I, defined
as the ring of all elements of the quaternion algebra of I mapping I
to itself under left multiplication.
RightOrder(I) : AlgAssVOrdIdl[RngOrd] -> AlgAssVOrd
Given an ideal I of a quaternion order defined over Z, Fq[X]
or a number ring, this function returns the right order of I, defined
as the ring of all elements of the quaternion algebra of I mapping I
to itself under right multiplication.
> K := NumberField(Polynomial([5,0,1]));
> K;
Number Field with defining polynomial $.1^2 + 5 over the Rational Field
> A := QuaternionAlgebra<K | 3, K.1>;
> O := MaximalOrder(A);
> I := lideal<O | O.2, Norm(O.2)>;
> Norm(I);
Principal Ideal
Generator:
2/1*$.1
> LeftOrder(I) eq O;
true
> RightOrder(I) eq O;
true
The tools provided for calculating ideal classes in the case of a maximal
or, more generally, an Eichler order S in a quaternion algebra over
Q, Fq(X) (with q odd) or a number field are described in this
section.
Given a definite order S over R, this function returns the mass
∑i 1 / [L(Ii) * :R * ] where I1, ..., Ih represent the
isomorphism classes of invertible right ideal of S and L(Ii)
denotes the left order of Ii.
LeftIdealClasses(S) : AlgAssVOrd[RngOrd] -> [AlgAssVOrdIdl]
RightIdealClasses(S) : AlgQuatOrd -> [AlgQuatOrdIdl]
RightIdealClasses(S) : AlgAssVOrd[RngOrd] -> [AlgAssVOrdIdl]
Support: [RngOrdIdl] Default:
These intrinsics find representatives for the left or right locally
free ideal classes of S, where S is an order in a quaternion
algebra A defined over Q, Fq(X) (with q odd) or a number
field. The algorithms are guaranteed to work correctly only when
S is a maximal order or an Eichler order.
For definite algebras, the support of the returned ideals may be
specified using parameter Support; this should be a sequence
of primes or prime ideals in the base ring which generate the narrow
class group and which do not ramify in A. In this case, the
routine will find ideal class representatives whose norms are
divisible only by primes in the specified support. The algorithm
usually runs faster if the support is either not specified or if
the support includes the prime divisors of the discriminant of S.
For indefinite algebras, the representatives are obtained from a
ray class group of the base field.
TwoSidedIdealClasses(S : Support) : AlgAssVOrd[RngOrd] -> [AlgAssVOrdIdl]
Support: [RngOrdIdl] Default:
Given an order S in a quaternion algebra, this function returns a
sequence containing representatives for the two-sided locally free
ideal classes of S. The algorithm is only guaranteed to work when
S is a maximal order or an Eichler order.
If the optional argument Support is specified, Magma tries
to construct representatives that have norm divisible by primes or
prime ideals in the specified support. If this is not possible,
the set specified using parameter Support will be enlarged by
the prime divisors of the discriminant of S. If this enlarged set
is still not large enough (which can only happen if the set does not
generate the class of group of the base ring of S) an error will
be raised.
Support: [RngOrdIdl] Default:
Given an order S in a quaternion algebra, this returns the two-sided
ideal class group of S as an abstract abelian group, together with
a map from the group to the set of two-sided ideal classes of S.
Inverses with respect to this map can be calculated in a very efficient
way and thus may be used to compute discrete logarithms. The algorithm
is only guaranteed to work when S is a maximal order or an Eichler order.
The optional parameter Support may be used to specify a support:
this should be a sequence of primes or prime ideals in the base ring
which generate the narrow class group and which do not ramify in the
parent algebra.
Given an order S in a quaternion algebra A, this function returns
representatives for the conjugacy classes of orders in A having the
same type as S. In particular, if S is an Eichler order of level N,
then a system of representatives for the conjugacy classes of Eichler
orders of level N is A is returned.
If A is definite and the base ring of S is the ring of integers or
a number ring, then S can be any order. In all other cases S must
be an Eichler order.
For definite algebras, the algorithm involves computing the right
ideal classes (in fact, the two problems are computationally equivalent
in practice).
In the following example we construct a maximal order in the quaternion
algebra ramified at 37, and enumerate its left ideal classes.
> S := QuaternionOrder(37);
> ideals := LeftIdealClasses(S);
> [ Basis(I) : I in ideals ];
[
[ 1, i, j, k ],
[ 2, 2*i, 1 + i + j, i + k ],
[ 2, 2*i, i + j, k ]
]
We now compute the right orders of the two nontrivial left ideal classes.
> _, I, J := Explode(ideals);
> R1 := RightOrder(I);
> R2 := RightOrder(J);
> IsIsomorphic(R1,R2);
true
Although the ideals I and J are non-isomorphic left ideals over
S, they have isomorphic right orders. In the example following
the next section we explore this phenomenon further.
In this example, we enumerate ideal classes for a definite quaternion
algebra (over a totally real field).
> P<x> := PolynomialRing(Rationals());
> F<b> := NumberField(x^3-3*x-1);
> Z_F := MaximalOrder(F);
> Foo := InfinitePlaces(F);
> pp := Decomposition(Z_F, 17)[1][1];
> A := QuaternionAlgebra(pp, Foo);
> O := MaximalOrder(A);
> time Rideals := RightIdealClasses(O);
Time: 0.870
> #Rideals;
2
In this example the classgroup of the base field is not trivial and
there are some ramified prime ideals in the algebra. Hence we expect
nontrivial two-sided ideal classes.
> K:= QuadraticField(401);
> A:= QuaternionAlgebra< K | -1, -1>;
> RamifiedPlaces(A);
[
Prime Ideal
Two element generators:
2
$.2 + 1,
Prime Ideal
Two element generators:
2
$.2 + 2
]
[ 1st place at infinity, 2nd place at infinity ]
> M:= MaximalOrder(A);
> #TwoSidedIdealClasses(M);
10
> time #RightIdealClasses(M);
140
Time: 6.470
In addition to operations on ideals of orders over more general rings
(see Section Orders), the following operations are defined for
ideals of quaternion orders over Z, Fq[X] and number rings.
The composite of I and J, where the right order of I equals the
left order of J.
Given ideals or orders I and J, this function returns the
intersection I ∩J.
Conjugate(I) : AlgAssVOrdIdl -> AlgAssVOrdIdl
Given an ideal I (of a quaternion algebra),
this function returns the conjugate ideal.
Norm(I) : AlgAssVOrdIdl -> RngOrdFracIdl
Given an ideal I over Z, this function returns the reduced
norm of the ideal, defined as the positive generator of the image
of the reduced norm map in Q.
Given an ideal I over Fq[X], this function returns the
reduced norm of the ideal, defined as the normalized generator
of the image of the reduced norm map in Fq(X).
Given an ideal I over a commutative order, this function
returns the reduced norm of I as a fractional ideal of the order.
Factorization(I) : AlgAssVOrdIdl -> SeqEnum
Given a two-sided ideal I of an hereditary order O, this function
returns the unique factorization of I into two-sided O-ideals. The
result is a sequence of tuples. The first entry of each tuple is a
two-sided ideal of O, the second is its exponent. (If the base ring
of I is Fq[X], then q is currently required to be odd.)
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|