Ideal Theory of Orders

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.

Contents

Creation and Access Functions

LeftIdeal(S, X) : AlgQuatOrd, [AlgQuatElt] -> AlgQuatOrdIdl
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.

PrimeIdeal(S, p) : AlgQuatOrd, RngElt -> AlgQuatOrdIdl
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) : AlgQuatOrd -> AlgQuatOrdIdl
CommutatorIdeal(S) : AlgAssVOrd -> AlgAssVOrdIdl
The two-sided ideal of the quaternion order S generated by elements of the form xy - yx.
MaximalLeftIdeals(O, p) : AlgQuatOrd, RngElt -> [AlgQuatOrdIdl]
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.

Example AlgQuat_Elementary_Ideals (H93E16)

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.

Example AlgQuat_Ideal_Bases (H93E17)

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) : AlgQuatOrdIdl -> AlgQuatOrd
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) : AlgQuatOrdIdl -> AlgQuatOrd
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.

Example AlgQuat_Left_Right_Quaternion_Ordre (H93E18)

> 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

Enumeration of Ideal Classes

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.

Mass(S) : AlgAssVOrd -> FldRatElt
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) : AlgQuatOrd -> [AlgQuatOrdIdl]
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) : AlgQuatOrd -> [AlgQuatOrdIdl]
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.

TwoSidedIdealClassGroup(S : Support) : AlgAssVOrd -> GrpAb, Map
    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.

ConjugacyClasses(S) : AlgAssVOrd -> SeqEnum
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).

Example AlgQuat_Ideal_Enumeration (H93E19)

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.

Example AlgQuat_Ideal_Enumeration (H93E20)

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

Example AlgQuat_Ideal_Enumeration (H93E21)

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

Operations on Ideals

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.

I * J : AlgAssVOrdIdl, AlgAssVOrdIdl -> AlgAssVOrdIdl
The composite of I and J, where the right order of I equals the left order of J.
I meet J : AlgQuatOrdIdl, AlgQuatOrdIdl -> AlgQuatOrdIdl
Given ideals or orders I and J, this function returns the intersection I ∩J.
Conjugate(I) : AlgQuatOrdIdl -> AlgQuatOrdIdl
Conjugate(I) : AlgAssVOrdIdl -> AlgAssVOrdIdl
Given an ideal I (of a quaternion algebra), this function returns the conjugate ideal.
Norm(I) : AlgQuatOrdIdl -> RngElt
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) : AlgQuatOrdIdl -> SeqEnum
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.)
V2.28, 13 July 2023