Attachment 'magma-quat-demo.m'
Download 1 RandomSecretQuaternionAlgebra := function();
2 A := AssociativeAlgebra(QuaternionAlgebra<Rationals() | -1,1>);
3 vecs := [&+[Random(10)*A.i : i in [1..4]] : j in [1..4]];
4 Mchange := Matrix(Rationals(),4,4,&cat[Eltseq(vecs[i]) : i in [1..4]]);
5 Mchange := Mchange^(-1);
6 seq := [<i,j,k,((vecs[i]*vecs[j])*Mchange)[k]> : i,j,k in [1..4]];
7 A := AssociativeAlgebra<Rationals(),4 | seq>;
8 return A;
9 end function;
10
11 // QUATERNION ALGEBRAS
12 A<alpha,beta> := QuaternionAlgebra<Rationals() | 3,-5>;
13 alpha^2;
14 beta^2;
15 beta*alpha eq -alpha*beta;
16 theta := 1+alpha-2*beta+3*alpha*beta;
17 MinimalPolynomial(theta);
18 theta^2 - Trace(theta)*theta + Norm(theta);
19
20 // RECOGNIZING QUATERNION ALGEBRAS
21 A := RandomSecretQuaternionAlgebra();
22 A;
23 [ A.i*A.j : i,j in [1..4]];
24 bl, Aquat, phi := IsQuaternionAlgebra(A);
25 bl;
26 Aquat;
27 StandardForm(Aquat);
28 Aquat.1^2, Aquat.2^2;
29 phi;
30
31 // RECOGNIZING THE MATRIX RING
32 IsMatrixRing( QuaternionAlgebra<QuadraticField(-3) | -1,-1> );
33 IsMatrixRing( QuaternionAlgebra<QuadraticField(5) | -1,-1> );
34
35 A := QuaternionAlgebra<Rationals() | -1, 1>;
36 eps := A.3-1;
37 MinimalPolynomial(eps), Norm(eps);
38 M2F, phi := MatrixRing(A,eps);
39 phi;
40 [<MinimalPolynomial(A.i), MinimalPolynomial(phi(A.i))> : i in [1..3]];
41
42 // HILBERT SYMBOL
43 _<x> := PolynomialRing(Rationals());
44 K<s> := NumberField(x^2-6);
45 Z_K := MaximalOrder(K);
46 S := [x+y*Z_K.2 : x,y in [0..7] | x*y ne 0];
47 a := Random(S); b := Random(S);
48 A := QuaternionAlgebra<K | a,b>;
49 RamifiedPlaces(A);
50 [<pp, HilbertSymbol(A, pp[1])> : pp in
51 Factorization(ideal<Z_K | 2*Norm(a)*Norm(b)>)];
52
53 F<b> := NumberField(x^3-3*x-1);
54 Foo := InfinitePlaces(F);
55 Z_F := MaximalOrder(F);
56 I := ideal<Z_F | 6>;
57 A := QuaternionAlgebra(I);
58 FactoredDiscriminant(A);
59 A := QuaternionAlgebra(ideal<Z_F | 1>, Foo[1..2]);
60 FactoredDiscriminant(A);
61
62 // MAXIMAL ORDERS
63 A<alpha,beta,alphabeta> := QuaternionAlgebra<F | -3,b>;
64 O := MaximalOrder(A);
65 Factorization(Discriminant(O));
66 PseudoBasis(O);
67
68 A := QuaternionAlgebra<QuadraticField(1234830) | -123748, -12349813>;
69 O := MaximalOrder(A);
70 Discriminant(O);
71
72 // IDEAL CLASSES
73 pp := Decomposition(Z_F, 17)[1][1];
74 A := QuaternionAlgebra(pp, Foo);
75 O := MaximalOrder(A);
76 time Rideals := RightIdealClasses(O);
77 #Rideals;
78 Irand := RandomRightIdeal(O);
79 IsIsomorphic(Irand, Rideals[1]);
80 IsIsomorphic(Irand, Rideals[2]);
81
82 // UNIT GROUPS
83 A := QuaternionAlgebra(ideal<Z_F | 2>, Foo);
84 IsDefinite(A);
85 O := MaximalOrder(A);
86 U, h := UnitGroup(O);
87 U;
88 #Units(O);
89
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.
