Orders

Let F be a number field with ring of integers R, and let A be a associative algebra over F (finite-dimensional, with 1). An associative order O of A is a subring O ⊂A which is a projective R-module such that O.F = A. We will also refer to an associative order simply as an order.

In Magma, associative orders have the type AlgAssVOrd, and may be declared for any associative algebra of type AlgAssV, namely, AlgAss, AlgMat, AlgQuat and AlgGrp. Orders have ideals of type AlgAssVOrdIdl, and elements of type AlgAssVOrdElt. In the special case where A is a quaternion algebra over the rationals, A has type AlgQuat and orders in A have type AlgQuatOrd.

Orders, like modules over Dedekind domains, are represented by a pseudobasis, see Section Pseudo Matrices. Currently, only basic arithmetic functions and procedures are available for general associative orders. Most of the nontrivial functionality currently available is designed for orders in quaternion algebras (over the rationals or number fields). The specialised functions for quaternionic orders are described in Chapter QUATERNION ALGEBRAS.

Algebras over the rationals: In Magma, the rationals are not considered to be a number field (the type FldRat is not a subtype of FldNum). Currently, much of the functionality here is designed primarily for algebras whose base field is a FldNum (while some of it, but not all, also works for algebras over the FldRat). To compute with algebras over Q, in many cases the best solution is to use RationalsAsNumberField().

Contents

Construction of Orders

Order(R, S) : Rng, SeqEnum[AlgAssVElt] -> AlgAssVOrd
Order(R, S) : RngFunOrd, SeqEnum[AlgAssVElt[FldFunG]] -> AlgAssVOrd
    Check: BoolElt                      Default: true
Given a ring R and sequence S of elements of an associative algebra A, returns the order of A generated freely over R by the sequence S. The ring R must be a number or function ring, Z, F[t] or F[1/t].

If the parameter Check is set to true then the elements in the sequence S are checked to be a basis.

Order(S) : SeqEnum[AlgAssVElt[FldAlg]] -> AlgAssVOrd
Order(S) : SeqEnum[AlgAssVElt[FldFun]] -> AlgAssVOrd
Given a sequence of elements S of an associative algebra A, returns the order of A generated by the sequence S. The algebra A must be defined over a number or function field F.
Order(S, I) : SeqEnum[AlgAssVElt[FldAlg]], SeqEnum[RngOrdFracIdl] -> AlgAssVOrd
Order(S, I) : SeqEnum[AlgAssVElt[FldFunG]], SeqEnum[RngFunOrdIdl] -> AlgAssVOrd
Given a sequence of elements S of an associative algebra A and a sequence I of ideals of a number or function ring R, returns the order of A generated by the sequence S with coefficient ideals I. The algebra A must be defined over a number or function field F and have ring of integers R.
Order(A, m, I) : AlgAssV[FldOrd], AlgMatElt[FldOrd], SeqEnum[RngOrdFracIdl] -> AlgAssVOrd
Order(A, m, I) : AlgAssV[FldNum], AlgMatElt[FldNum], SeqEnum[RngOrdFracIdl] -> AlgAssVOrd, Map
Order(A, m, I) : AlgAssV[FldFun], AlgMatElt[FldFun], SeqEnum[RngFunOrdIdl] -> AlgAssVOrd
Given an associative algebra A, a matrix m, and a sequence I of ideals of a number or function ring R, returns the order of A generated by the sequence of elements specified by the rows of m in the basis of A with coefficient ideals I. The algebra A must be defined over a number or function field F with ring of integers R.
Order(A, pm) : AlgAssV[FldOrd], PMat -> AlgAssVOrd
Order(A, pm) : AlgAssV[FldNum], PMat -> AlgAssVOrd, Map
Order(A, pm) : AlgAssV[FldFun], PMat -> AlgAssVOrd
Given an associative algebra A and a pseudomatrix pm, returns the order of A specified by the pseudomatrix pm. The basis of the order is specified by the rows of pm which have coefficients with respect to the basis of A. The algebra A must be defined over a number or function field with ring of integers R which is the base ring of the pseudomatrix pm.

Example AlgAss_ord_creat_cyc (H88E5)

We begin by illustrating three methods for creating an associative order.
> P<x> := PolynomialRing(Rationals());
> F<b> := NumberField(x^3-3*x-1);
> Z_F := MaximalOrder(F);
> A<alpha,beta,alphabeta> := QuaternionAlgebra<F | -3,b>;

First type of constructor takes an algebra, a matrix representing the basis elements, and coefficient ideals.

> M := MatrixAlgebra(F,4) ! 1;
> I := [ideal<Z_F | 1> : i in [1..4]];
> O := Order(A, M, I);
> O;
Order of Quaternion Algebra with base ring Field of Fractions of Z_F
with coefficient ring Maximal Equation Order with defining polynomial x^3 - 3*x
    - 1 over its ground order

The second type takes an algebra and a pseudomatrix.

> P := PseudoMatrix(I, M);
> O := Order(A, P);
> O;
Order of Quaternion Algebra with base ring Field of Fractions of Z_F
with coefficient ring Maximal Equation Order with defining polynomial x^3 - 3*x
    - 1 over its ground order

The third takes simply a sequence of elements.

> O := Order([alpha,beta]);
> O;
Order of Quaternion Algebra with base ring Field of Fractions of Z_F
with coefficient ring Maximal Equation Order with defining polynomial x^3 - 3*x
    - 1 over its ground order

Example AlgAss_ord_creat_cyc (H88E6)

Here we give two other examples of order creation.
> F<w> := CyclotomicField(3);
> A := FPAlgebra<F, x,y | x^3-3, y^3+5, y*x-w*x*y>;
> Aass, f := Algebra(A);
> Aass;
Associative Algebra of dimension 9 with base ring F
> f;
Mapping from: AlgFP: A to AlgAss: Aass
> S := [f(A.i) : i in [1..2]];
> S;
[ (0 0 1 0 0 0 0 0 0), (0 1 0 0 0 0 0 0 0) ]
> O := Order(S);
> O;
Order of Associative Algebra of dimension 9 with base ring Field of Fractions of R
with coefficient ring Maximal Equation Order with defining polynomial x^2 + x +
    1 over its ground order
>
> A := GroupAlgebra(F, DihedralGroup(6));
> Aass := Algebra(A);
> O := Order([g : g in Generators(Aass)]);
> O;
Order of Associative Algebra of dimension 12 with base ring Field of Fractions
of R with coefficient ring Maximal Equation Order with defining polynomial
x^2 + x + 1 over its ground order
MaximalOrder(A) : AlgAssV[FldRat] -> AlgAssVOrd
Computes a maximal Z-order in the semisimple associative algebra A, which must be defined over the rational numbers. The algorithm can be found in [Fri00], Para 3.5. We refer to [IR93] for a very similar approach.
MaximalOrder(A) : AlgAssV[FldAlg] -> AlgAssVOrd
Given an associative algebra over an algebraic field compute the maximal order in A. This computation uses RestrictionOfScalars and the MaximalOrder computation of the isomorphic algebra over the rationals as described above.
MaximalOrder(O) : AlgAssVOrd[RngInt] -> AlgAssVOrd
MaximalOrder(O) : AlgAssVOrd[RngOrd] -> AlgAssVOrd
Given an order O of an associative algebra A over the rationals or a number field return the maximal order of A which contains O.
MaximalOrderFinite(A) : AlgAssV[FldFunRat] -> AlgAssVOrd
Computes a maximal F[t] order in the semisimple associative algebra A, which must be defined over some rational function field F(t). The algorithm can be found in [Fri00], Para 3.5. We refer to [IR93] for a very similar approach.
MaximalOrderInfinite(A) : AlgAssV[FldFunRat] -> AlgAssVOrd
Computes a maximal F[1/t] order in the semisimple associative algebra A, which must be defined over some rational function field F(t). The algorithm can be found in [Fri00], Para 3.5. We refer to [IR93] for a very similar approach.
MaximalOrderFinite(A) : AlgAssV[FldFun] -> AlgAssVOrd
MaximalOrderInfinite(A) : AlgAssV[FldFun] -> AlgAssVOrd
Given an associative algebra over an algebraic function field K compute the maximal order in A containing the finite or infinite maximal order of K. This computation uses RestrictionOfScalars and one of the MaximalOrderFinite or MaximalOrderInfinite computations of the isomorphic algebra over the rational function field as described above.
MaximalOrder(O) : AlgAssVOrd[RngUPol] -> AlgAssVOrd
MaximalOrder(O) : AlgAssVOrd[RngVal] -> AlgAssVOrd
MaximalOrder(O) : AlgAssVOrd[RngFunOrd] -> AlgAssVOrd
Given an order O of an associative algebra A over a function field return the maximal order of A which contains O.

Example AlgAss_max_ord (H88E7)

First we define two 9 x 9-matrices that generate a 9-dimensional associative algebra. We check that its Jacobson radical is zero, and then we compute a maximal order.
> a1 := Matrix( [
> [-184174/80137, -325/80137, 71/2163699, 0, 0, 0, 0, 0, 0],
> [17713719/80137, 92087/80137, -325/80137, 0, 0, 0, 0, 0, 0],
> [-2189265975/80137, -16429806/80137, 92087/80137, 0, 0, 0, 0, 0, 0],
> [0, 0, 0, 64850/80137, 1472/240411, -25/2163699, 0, 0, 0],
> [0, 0, 0, -6237225/80137, -32425/80137, 1472/240411, 0, 0, 0],
> [0, 0, 0, 3305230272/80137, 45310743/80137, -32425/80137, 0, 0, 0],
> [0, 0, 0, 0, 0, 0, 119324/80137, -497/240411, -46/2163699],
> [0, 0, 0, 0, 0, 0, -11476494/80137, -59662/80137, -497/240411],
> [0, 0, 0, 0, 0, 0, -1115964297/80137, -28880937/80137, -59662/80137] ] );
> a2:= Matrix( [
> [0, 0, 0, 282469/240411, 956/2163699, -26/2163699, 0, 0, 0],
> [0, 0, 0, -6486714/80137, -21029/240411, 956/2163699, 0, 0, 0],
> [0, 0, 0, 238511484/80137, -2766918/80137, -21029/240411, 0, 0, 0],
> [0, 0, 0, 0, 0, 0, -85879/240411, -4894/2163699, 64/6491097],
> [0, 0, 0, 0, 0, 0, 5322432/80137, 163145/240411, -4894/2163699],
> [0, 0, 0, 0, 0, 0, -1220999166/80137, -13720122/80137, 163145/240411],
> [-1183167/80137, -11814/80137, -14/80137, 0, 0, 0, 0, 0, 0],
> [-94306842/80137, -2653965/80137, -11814/80137, 0, 0, 0, 0, 0, 0],
> [-79581502242/80137, -1335450240/80137, -2653965/80137, 0, 0, 0, 0, 0, 0] ] );
> M := MatrixAlgebra( Rationals(), 9 );
> A := sub< M | [ a1, a2 ] >;
> Dimension(A);
9
> JacobsonRadical(A);
Matrix Algebra [ideal of A] of degree 9 and dimension 0 with 0 generators over
Rational Field
> O := MaximalOrder(A);
> Discriminant(O);
-19683
> Determinant(Matrix(9, [Trace(a*b) : a, b in Basis(O)]));
-19683
> T :=MultiplicationTable(O);
> T[3][7];
[ -16583482050411285785256, 5672389828626293786946, 1059868937213366777403,
55245368126632733561175, -41598423838438078787076, 1726223870812049536260,
66694491159819102489072, 76373181201401217517416, -114928189655490866071212 ]

Example AlgAss_max_ord_alg (H88E8)

We show a maximal order computation for an algebra over a number field.
> P<x> := PolynomialRing(Rationals());
> F<b> := NumberField(x^3-3*x-1);
> Z_F := MaximalOrder(F);
> A<alpha,beta,alphabeta> := QuaternionAlgebra<F | -3,b>;
> AA := AssociativeAlgebra(A);
> MAA := MaximalOrder(AA);
> MAA;
Order of Associative Algebra of dimension 4 with base ring F
with coefficient ring Maximal Equation Order with defining polynomial x^3 - 3*x
    - 1 over Z
> Discriminant(MAA);
Ideal of Z_F
Basis:
[16  0  0]
[ 0 16  0]
[ 0  0 16]
Below we give an example of a maximal order computation of an algebra defined over a number field in relative representation.
> P<x> := PolynomialRing(QuadraticField(23));
> F<b> := NumberField(x^3-3*x-1);
> Z_F := MaximalOrder(F);
> A<alpha,beta,alphabeta> := QuaternionAlgebra<F | -3,b>;
> AA := AssociativeAlgebra(A);
> MAA := MaximalOrder(AA);
> Discriminant(MAA);
Ideal of Z_F
Basis:
Pseudo-matrix over Maximal Equation Order of Quadratic Field with defining
polynomial x^2 - 23 over the Rational Field
Principal Ideal
Generator:
    -2304/1*$.1 * ( $.1 0 0 )
Principal Ideal
Generator:
    -2304/1*$.1 * ( 0 $.1 0 )
Principal Ideal
Generator:
    -2304/1*$.1 * ( 0 0 $.1 )
RestrictionOfScalars(O) : AlgAssVOrd[RngOrd] -> AlgAssVOrd, Map
RestrictionOfScalars(O) : AlgAssVOrd[RngFunOrd] -> AlgAssVOrd, Map
RestrictionOfScalars(O, C) : AlgAssVOrd[RngOrd], Rng -> AlgAssVOrd, Map
RestrictionOfScalars(O, C) : AlgAssVOrd[RngFunOrd], Rng -> AlgAssVOrd, Map
Given an order O over an order R of an algebraic number or function field K of an associative algebra A over K and an optional coefficient ring C of R return the order isomorphic to O over C if given otherwise the coefficient ring of R.

Example AlgAss_restrict (H88E9)

We give an example showing a RestrictionOfScalars computation of an order over an order of an algebraic field.
> P<x> := PolynomialRing(QuadraticField(23));
> F<b> := NumberField(x^3-3*x-1);
> Z_F := MaximalOrder(F);
> A<alpha,beta,alphabeta> := QuaternionAlgebra<F | -3,b>;
> A := AssociativeAlgebra(A);
> O := Order([A | alpha, beta]);
> RO, m := RestrictionOfScalars(O);
> m(O.1);
[$.1 0 0 0 0 0 0 0 0 0 0 0]
> $1 @@ m;
[Z_F.1 0 0 0]
> RO;
Order of Associative Algebra of dimension 12 with base ring Quadratic Field with
defining polynomial x^2 - 23 over the Rational Field
with coefficient ring Maximal Equation Order of Quadratic Field with defining
polynomial x^2 - 23 over the Rational Field
> m;
Mapping from: AlgAssVOrd: O to AlgAssVOrd: RO given by a rule
> RO.7 @@ m;
[0 0 Z_F.1 0]
> m($1);
[0 0 0 0 0 0 $.1 0 0 0 0 0]
> ROZ := RestrictionOfScalars(O, Integers());
> ROZ, mZ := RestrictionOfScalars(O, Integers());
> ROZ;
Order of Associative Algebra of dimension 24 with base ring Rational Field
with coefficient ring Integer Ring
> mZ;
Mapping from: AlgAssVOrd: O to AlgAssVOrd: ROZ given by a rule
> mZ(O.1);
[633707 -253386 -65276 -157853 -61885 -80837 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0]
> $1 @@ mZ;
[Z_F.1 0 0 0]
> ROZ.22 @@ mZ;
[0 0 0 ($.1 + 23/1*$.2)*Z_F.1 + 72/1*$.1*Z_F.2 + 3/1*$.2*Z_F.3]
> mZ($1);
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0]

Attributes

BaseRing(O) : AlgAssVOrd -> Rng
CoefficientRing(O) : AlgAssVOrd -> Rng
The base ring of the associative order O.
Algebra(O) : AlgAssVOrd -> AlgAssV
The container algebra of the associative order O.
Degree(O) : AlgAssVOrd -> RngIntElt
Dimension(O) : AlgAssVOrd -> RngIntElt
The rank of O over its base ring. Equivalently: O is an order of some algebra A, this returns the dimension of A over its base field.
Discriminant(O) : AlgAssVOrd[RngOrd] -> RngOrdIdl
Discriminant(O) : AlgAssVOrd[RngFunOrd] -> RngOrdIdl
Discriminant(O) : AlgAssVOrd[RngInt] -> RngIntElt
Discriminant(O) : AlgAssVOrd[RngUPol] -> RngIntElt
Discriminant(O) : AlgAssVOrd[RngVal] -> RngIntElt
For an order O in a quaternion algebra (with type AlgQuat), this returns the reduced discriminant of O. For all other types of algebra, it returns the discriminant of O defined in the most generic way, i.e the determinant of the trace form where trace is the generic trace.
FactoredDiscriminant(O) : AlgAssVOrd[RngOrd] -> [Tup]
This returns the factorization of Discriminant(O) (see above) for the order O.
MultiplicationTable(O) : AlgAssVOrd -> SeqEnum
Returns the multiplication table of the maximal order O. This is a three dimensional table of structure constants. If T denotes this table, then T[i][j] is a sequence of integers containing the coefficients of the product of the i-th and j-th basis elements with respect to the basis of the order.
Module(O) : AlgAssVOrd[RngOrd] -> PMat
Return the pseudo matrix describing the basis of the associative order O over a number ring.
TraceZeroSubspace(O) : AlgAssVOrd -> SeqEnum
Given an order O in a quaternion algebra, this computes the submodule of elements with trace 0. A basis or a pseudo-basis for this submodule is returned, depending whether the base field of the quaternion algebra is Q or a number field. (The base ring of O is, respectively, either Z or an order in that number field.)

Bases of Orders

PseudoBasis(O) : AlgAssVOrd[RngOrd] -> SeqEnum
PseudoBasis(O) : AlgAssVOrd[RngFunOrd] -> SeqEnum
Given an associative order O over R, where R is an order in a number or function field, this returns data describing O as an R-module. It returns a sequence of tuples < Ii, bi > where Ii is an ideal of R and bi is an element of Algebra(O), such that O is the direct sum of the R-modules Ii bi. In particular, the bi form a basis of Algebra(O) as a vector space over the field of fractions of R. Note that the bi may not lie in O.
PseudoMatrix(O) : AlgAssVOrd[RngOrd]> -> PMat
PseudoMatrix(O) : AlgAssVOrd[RngFunOrd]> -> PMat
Returns the pseudomatrix corresponding to PseudoBasis(O).
Basis(O) : AlgAssVOrd -> SeqEnum
When O is an order over Z, this returns a Z-module basis of O.

When the base ring of O is an extension of Z, this returns part of the data returned by PseudoBasis(O): it returns a basis of Algebra(O). Note that this determines nothing about O, while the full data returned by PseudoBasis(O) determines O.

ZBasis(O) : AlgAssVOrd[RngOrd] -> [AlgAssVElt]
ZBasis(O) : AlgAssVOrd[RngFunOrd] -> [AlgAssVElt]
Returns a Z-module basis for the order O.
Generators(O) : AlgAssVOrd -> [AlgAssVElt]
Returns a sequence of generators of O as a module over its base ring.
LocalBasis(O, p) : AlgAssVOrd, RngOrdIdl -> [AlgAssElt]
    Type: MonStgElt                     Default: ""
Given an order O over a ring R in an algebra A, this function returns a basis of a free R-module F in A such that O and F agree at the completion at the prime ideal p of R. If Type is specified, it must either be "Submodule" or "Supermodule". In which case F is either a sub- or supermodule of O.

Example AlgAss_bases (H88E10)

This example demonstrates use of PseudoBasis of an order.
> P<x> := PolynomialRing(Rationals());
> F<b> := NumberField(x^3-3*x-1);
> Z_F := MaximalOrder(F);
> A := QuaternionAlgebra<F | -3,b>;
> O := Order([1/3*A.1, A.2], [ideal<Z_F | b^2+b+1>, ideal<Z_F | 1>]);
> O;
Order of Quaternion Algebra with base ring Field of Fractions of Z_F
with coefficient ring Maximal Equation Order with defining polynomial x^3 - 3*x
    - 1 over its ground order
> Basis(O);
[ Z_F.1, i, j, k ]
This is a basis of Algebra(O) but not a basis of O itself. The structure of O as a ZF-module is given by this basis together with coefficient ideals, as returned by either of the following:
> PseudoBasis(O);
[
    <Principal Ideal of Z_F
    Generator:
        Z_F.1, Z_F.1>,
    <Fractional Principal Ideal of Z_F
    Generator:
        1/3*Z_F.1 + 1/3*Z_F.2 + 1/3*Z_F.3, i>,
    <Principal Ideal of Z_F
    Generator:
        Z_F.1, j>,
    <Fractional Principal Ideal of Z_F
    Generator:
        1/3*Z_F.1 + 1/3*Z_F.2 + 1/3*Z_F.3, k>
]
> PseudoMatrix(O);
Pseudo-matrix over Maximal Equation Order with defining polynomial x^3 - 3*x
     - 1 over its ground order
Principal Ideal of Z_F
Generator:
    Z_F.1 * ( Z_F.1 0 0 0 )
Fractional Principal Ideal of Z_F
Generator:
    1/3*Z_F.1 + 1/3*Z_F.2 + 1/3*Z_F.3 * ( 0 Z_F.1 0 0 )
Principal Ideal of Z_F
Generator:
    Z_F.1 * ( 0 0 Z_F.1 0 )
Fractional Principal Ideal of Z_F
Generator:
    1/3*Z_F.1 + 1/3*Z_F.2 + 1/3*Z_F.3 * ( 0 0 0 Z_F.1 )
> ZBasis(O);
[ Z_F.1, Z_F.2, Z_F.3, (1/3*Z_F.1 + 1/3*Z_F.2 + 1/3*Z_F.3)*i, (1/3*Z_F.1 +
4/3*Z_F.2 + 1/3*Z_F.3)*i, (1/3*Z_F.1 + 4/3*Z_F.2 + 4/3*Z_F.3)*i, j, Z_F.2*j,
Z_F.3*j, (1/3*Z_F.1 + 1/3*Z_F.2 + 1/3*Z_F.3)*k, (1/3*Z_F.1 + 4/3*Z_F.2 +
1/3*Z_F.3)*k, (1/3*Z_F.1 + 4/3*Z_F.2 + 4/3*Z_F.3)*k ]

Predicates

O1 eq O2 : AlgAssVOrd, AlgAssVOrd -> BoolElt
Return true if and only if the orders O1 and O2 are equal as subrings of the same algebra.
x in O : AlgAssVElt, AlgAssVOrd -> BoolElt
x notin O : AlgAssVElt, AlgAssVOrd -> BoolElt
Return true (respectively, false) if the element x of an associative algebra is in the associative order O.

Operations with Orders

Adjoin(O, x) : AlgAssVOrd, AlgAssVElt -> AlgAssVOrd
Adjoin(O, x, I) : AlgAssVOrd, AlgAssVElt, RngOrdFracIdl -> AlgAssVOrd
Returns the order obtained by adjoining the element x to the order O, optionally with coefficient ideal I.
O1 + O2 : AlgAssVOrd[RngOrd], AlgAssVOrd[RngOrd] -> AlgAssVOrd
Returns the sum of the orders O1 and O2.
O1 meet O2 : AlgAssVOrd[RngOrd], AlgAssVOrd[RngOrd] -> AlgAssVOrd
Returns the intersection of the orders O1 and O2.
O ^ x : AlgAssVOrd, AlgAssElt -> AlgAssvOrd
Returns the conjugate order x - 1 O x.

Example AlgAss_sumandadjoin (H88E11)

> P<x> := PolynomialRing(Rationals());
> F<b> := NumberField(x^3-3*x-1);
> Z_F := MaximalOrder(F);
> F := FieldOfFractions(Z_F);
> A<alpha,beta,alphabeta> := QuaternionAlgebra<F | -3,b>;
> O := Order([alpha,beta]);
> O1 := Order([1/3*alpha,beta], [ideal<Z_F | b^2+b+1>, ideal<Z_F | 1>]);
> Discriminant(O1);
Principal Ideal of Z_F
Generator:
    4/1*F.1 + 12/1*F.2 + 8/1*F.3
> xi := (1 + alpha + (7+5*b+6*b^2)*beta + (3+b+6*b^2)*alphabeta)/2;
> zeta := (-6-25*b-5*b^2)*alpha - 3*beta;
> O2 := Adjoin(O, xi);
> O := O1+O2;
> Discriminant(O);
Ideal of Z_F
Basis:
[2 0 4]
[0 2 4]
[0 0 6]
V2.28, 13 July 2023