SetDebugOnError(true);
SetEchoInput(true);

P<x> := PolynomialRing(Rationals());
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]);
Norm(Discriminant(O))*Discriminant(BaseRing(O))^Dimension(O);
RestrictionOfScalars(O);
Discriminant($1);

RestrictionOfScalars(MaximalOrder(Algebra(O)));
Discriminant($1);
Norm(Discriminant(MaximalOrder(Algebra(O))))*Discriminant(BaseRing(O))^Dimension(O);

MaximalOrder(Algebra(RestrictionOfScalars(O)));
Discriminant($1);

MaximalOrder(RestrictionOfScalars(A));
Discriminant($1);
RestrictionOfScalars(MaximalOrder(A));
Discriminant($1);

P<x> := PolynomialRing(RationalsAsNumberField());
F<b> := NumberField(x^3-3*x-1);
Z_F := MaximalOrder(F);
A<alpha,beta,alphabeta> := QuaternionAlgebra<F | -3,b>;
A := AssociativeAlgebra(A);
RestrictionOfScalars(A);
RestrictionOfScalars(A, Rationals());
O := Order([A|alpha,beta]);
RestrictionOfScalars(O);
Discriminant($1);
Norm(Discriminant(O))*Discriminant(BaseRing(O))^Dimension(O);
RestrictionOfScalars(O, Integers());
Discriminant($1);
Discriminant(BaseRing(BaseRing(O)));
RestrictionOfScalars(MaximalOrder(Algebra(O)));

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);
RestrictionOfScalars(A);
RestrictionOfScalars(A, Rationals());
MaximalOrder(A);
Discriminant($1);
delete A`MaximalOrder;
MaximalOrder($2);
Discriminant($1);
