Creation of Quaternion Algebras

A general constructor for a quaternion algebra over any field K creates a model in terms of two generators x and y and three relations x2 = a, y2 = b, yx = - xy with a, b ∈K * if K has characteristic different from 2, and x2 + x = a, y2 = b, yx = (x + 1)y if K has characteristic 2. The printing names i, j, and k are assigned to the generators x, y, and xy by default, unless the user assigns alternatives (see the function AssignNames below, or the example which follows).

Special constructors are provided for quaternion algebras over Q, which return an algebra with a more general set of three defining quadratic relations. In general, the third generator need not be the product of the first two. This allows the creation of a quaternion algebra A such that the default generators {1, i, j, k} form a basis for a maximal order.

QuaternionAlgebra< K | a, b > : Rng, RngElt, RngElt -> AlgQuat
For a, b ∈K * , this function creates the quaternion algebra A over the field K on generators i and j with relations i2 = a, j2 = b, and ji = - ij or ji=(i + 1)j, as (char)(K) != 2 or (char)(K)=2, respectively. A third generator is set to k = ij. The field K may be of any Magma field type; for inexact fields, such as local fields, one should expect unstable results since one cannot test deterministically for element equality.
AssignNames(~A, S) : AlgQuat, [MonStgElt] ->
Given a quaternion algebra A and sequence S of strings of length 3, this function assigns the strings to the generators of A, i.e. the basis elements not equal to 1. This function is called by the bracket operators < > at the time of creation of a quaternion algebra.

Example AlgQuat_Quaternion_Constructor (H93E1)

A general quaternion algebra can be created as follows. Note that the brackets < > can be used to give any convenient names to the generators of the ring.
> A<x,y,z> := QuaternionAlgebra< RationalField() | -1, -7 >;
> x^2;
-1
> y^2;
-7
> x*y;
z
In the case of this constructor the algebra generators are of trace zero and are pairwise anticommuting. This contrasts with some of the special constructors for quaternion algebras over the rationals described below.

Example AlgQuat_Quaternion_Constructor_char2 (H93E2)

Similarly, we have the following for characteristic 2.
> A<i,j> := QuaternionAlgebra< GF(2) | 1, 1 >;
> i^2;
1 + i
> j^2;
1
QuaternionAlgebra(N) : RngIntElt -> AlgQuat
    Al: MonStgElt                       Default: "TraceValues"
    Optimized: BoolElt                  Default: true
Given a positive squarefree integer N, this function returns a rational quaternion algebra of discriminant N. If the optional parameter Al is set to "Random", or N is the product of an even number of primes (i.e. the algebra is indefinite), then a faster, probabilistic algorithm is used. If Al is set to "TraceValues" and N is a product of an odd number of primes, then an algebra basis is computed which also gives a basis for a maximal order (of discriminant N). If Optimized is true then an optimized representation of the algebra is returned.
QuaternionAlgebra(N) : RngUPolElt -> AlgQuat
Given a squarefree polynomial N ∈Fq[x] for some odd q, this function returns a quaternion algebra over Fq(x) of discriminant N.
QuaternionAlgebra(I) : RngOrdIdl -> AlgQuat
    Optimized: BoolElt                  Default: true
Given an ideal I of a number field F with an even number of prime ideal factors, the function returns the quaternion algebra A over F which is ramified exactly at the primes dividing I. The ideal I is not required to be squarefree, so A will be ramified at the radical of I. If Optimized is true then an optimized representation of the algebra is returned.
QuaternionAlgebra(I, S) : RngOrdIdl, [PlcNumElt] -> AlgQuat
    Optimized: BoolElt                  Default: true
Given an ideal I and a subset S of real places of a number field F such that the number of prime ideal divisors of I has the same parity as S, the function returns the quaternion algebra which is ramified exactly at the primes dividing I and at the real places specified by the set S. If Optimized is true then an optimized representation of the algebra is returned.
QuaternionAlgebra(S) : [PlcNumElt] -> AlgQuat
    Optimized: BoolElt                  Default: true
Given an even set S of noncomplex places of a number field F, this function returns the quaternion algebra which is ramified exactly at S. If Optimized is true then an optimized representation of the algebra is returned.

Example AlgQuat_Quaternion_Constructor_Over_NumberField (H93E3)

We illustrate the above constructors in the case of a general number field.
> P<x> := PolynomialRing(Rationals());
> F<b> := NumberField(x^3-3*x-1);
> Foo := InfinitePlaces(F);
> Z_F := MaximalOrder(F);
> I := ideal<Z_F | 6>;
> A := QuaternionAlgebra(I);
> FactoredDiscriminant(A);
[
    Prime Ideal of Z_F
    Two element generators:
        [3, 0, 0]
        [2, 1, 0],
    Principal Prime Ideal of Z_F
    Generator:
        [2, 0, 0]
]
[]
> A := QuaternionAlgebra(ideal<Z_F | 1>, Foo[1..2]);
> FactoredDiscriminant(A);
[]
[ 1st place at infinity, 2nd place at infinity ]
QuaternionAlgebra(D1, D2, T) : RngIntElt, RngIntElt, RngIntElt -> AlgQuat
This intrinsic creates the rational quaternion algebra Q< i, j >, where Z[i] and Z[j] are quadratic suborders of discriminant D1 and D2, respectively, and Z[ij - ji] is a quadratic suborder of discriminant D3 = D1 D2 - T2. The values D1 D2 and T must have the same parity and D1, D2 and D3 must each be the discriminant of some quadratic order, i.e. nonsquare integers congruent to 0 or 1 modulo 4.

Example AlgQuat_Quaternion_Constructor_over_Rationals (H93E4)

The above constructor is quite powerful for constructing quaternion algebras with given ramification. For any i and j, a commutator element such as ij - ji has trace zero, so in the above constructor, the minimal polynomial of this element is x2 + n, where n = (D1 D2 - T2)/4.

In the following example we construct such a ring, and demonstrate some of the relations satisfied in this algebra. Note that the minimal polynomial is an element of the commutative polynomial ring over the base field of the algebra.

In particular, we note that the algebra is not in standard form.

> A<i,j,k> := QuaternionAlgebra(-7,-47,1);
> PQ<x> := PolynomialRing(RationalField());
> MinimalPolynomial(i);
x^2 - x + 2
> MinimalPolynomial(j);
x^2 - x + 12
> MinimalPolynomial(k);
x^2 - x + 24
> i*j;
k
> i*j eq -j*i;
false
From their minimal polynomials, we see that the algebra generators i, j, and k generate commutative subfields of discriminants -7, -47, and -95. The value 82 = (D1 D2 - T2)/4, however, is a more important invariant of the ring. We give a preview of the later material by demonstrating the functionality for computing the determinant and ramified primes of an algebra over Q.
> MinimalPolynomial(i*j-j*i);
x^2 + 82
> Discriminant(A);
41
> RamifiedPrimes(A);
[ 41 ]
A ramified prime must be inert or ramified in every subfield and must divide the norm of any commutator element xy - yx.
> x := i;
> y := j;
> Norm(x*y-y*x);
82
> Factorization(82);
[ <2, 1>, <41, 1> ]
> x := i-k;
> y := i+j+k;
> Norm(x*y-y*x);
1640
> Factorization(1640);
[ <2, 3>, <5, 1>, <41, 1> ]
> KroneckerSymbol(-7,2), KroneckerSymbol(-47,2), KroneckerSymbol(-95,2);
1 1 1
> KroneckerSymbol(-7,41), KroneckerSymbol(-47,41), KroneckerSymbol(-95,41);
-1 -1 -1
The fact that the latter Kronecker symbols are -1, indicating that 41 is inert in the quadratic fields of discriminants -7, -47, and -95, proves that 41 is a ramified prime, and 2 is not.
V2.28, 13 July 2023