# 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 \subset A$ which is a projective $R$-module such that $O\cdot 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](../../Modules/ModulesOverDedekindDomains/pmat.md#secpmat). 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](../QuaternionAlgebras/index-quaternion-algebras.md#chapalgquat).

*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 ${\mathbb{Q}}$, in many cases the best solution is to use `RationalsAsNumberField()`.

## Construction of Orders

### `Order(R, S): Rng, SeqEnum[AlgAssVElt] -> AlgAssVOrd`

### `Order(R, S): RngFunOrd, SeqEnum[AlgAssVElt[FldFunG]] -> AlgAssVOrd`

```magma
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, ${\mathbb{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: Ord Creat Cyc (ex-5ab68c)`

We begin by illustrating three methods for creating an associative order.

```magma
> 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.

```magma
> 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.

```magma
> 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.

```magma
> 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: Ord Creat Cyc (ex-1d14f4)`

Here we give two other examples of order creation.

```magma
> 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 ${\mathbb{Z}}$-order in the semisimple associative algebra $A$, which must be defined over the rational numbers. The algorithm can be found in [[Friedrichs, 2000](../../references.md#cite-fr2)], §3.5. We refer to [[Ivanyos and Rónyai, 1993](../../references.md#cite-ivanyos-ronyai)] 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`](ops.md#function-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 [[Friedrichs, 2000](../../references.md#cite-fr2)], §3.5. We refer to [[Ivanyos and Rónyai, 1993](../../references.md#cite-ivanyos-ronyai)] 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 [[Friedrichs, 2000](../../references.md#cite-fr2)], §3.5. We refer to [[Ivanyos and Rónyai, 1993](../../references.md#cite-ivanyos-ronyai)] 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`](ops.md#function-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: Max Ord (ex-9fdfa9)`

First we define two $9\times 9$-matrices that generate a $9$-dimensional associative algebra. We check that its Jacobson radical is zero, and then we compute a maximal order.

```magma
> 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

```

```magma
> T :=MultiplicationTable(O);
> T[3][7];
[ -16583482050411285785256, 5672389828626293786946, 1059868937213366777403,
55245368126632733561175, -41598423838438078787076, 1726223870812049536260,
66694491159819102489072, 76373181201401217517416, -114928189655490866071212 ]

```

### `Example: Max Ord Alg (ex-23b948)`

We show a maximal order computation for an algebra over a number field.

```magma
> 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.

```magma
> 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: restrict (ex-bbfaa2)`

We give an example showing a `RestrictionOfScalars` computation of an order over an order of an algebraic field.

```magma
> 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 ${\mathbb{Q}}$ or a number field. (The base ring of $O$ is, respectively, either ${\mathbb{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 $\langle I_i, b_i \rangle$ where $I_i$ is an ideal of $R$ and $b_i$ is an element of `Algebra(O)`, such that $O$ is the direct sum of the $R$-modules $I_i b_i$. In particular, the $b_i$ form a basis of `Algebra(O)` as a vector space over the field of fractions of $R$. Note that the $b_i$ 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 ${\mathbb{Z}}$, this returns a ${\mathbb{Z}}$-module basis of $O$.

When the base ring of $O$ is an extension of ${\mathbb{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 ${\mathbb{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]`

```magma
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: bases (ex-1fcab8)`

This example demonstrates use of `PseudoBasis` of an order.

```magma
> 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 $Z_F$-module is given by this basis together with coefficient ideals, as returned by either of the following:

```magma
> 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 $O_1$ and $O_2$ 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 $O_1$ and $O_2$.

### `O1 meet O2: AlgAssVOrd[RngOrd], AlgAssVOrd[RngOrd] -> AlgAssVOrd`

Returns the intersection of the orders $O_1$ and $O_2$.

### `O ^ x: AlgAssVOrd, AlgAssElt -> AlgAssvOrd`

Returns the conjugate order $x^{-1} O x$.

### `Example: sumandadjoin (ex-9c61c8)`

```magma
> 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]

```
