# Construction of General Algebras and their Elements

## Construction of a General Algebra

The construction of an algebra depends on its category. The chapters on the individual algebra categories describe this in detail. Here only an overview is given.

### `Algebra< R, n | Q >: Rng, RngIntElt, SeqEnum -> AlgGen`

Let $R$ be ring, $n$ an integer and $Q$ a sequence of $n^3$ elements of $R$. This function creates an algebra $A$ of dimension $n$ over $R$ with basis $e_1, \ldots, e_n$ such that $Q$ contains the structure constants of $A$, i.e. $e_i * e_j = \sum a_{ij}^k e_k$, where $a_{ij}^k$ is the element in position $(i-1)*n^2 + (j-1)*n + k$ of $Q$.

### `AssociativeAlgebra< R, n | Q >: Rng, RngIntElt, SeqEnum -> AlgAss`

```magma
Check: BoolElt                    Default: true
```

This function creates the associative structure constant algebra $A$ as returned by `Algebra< R, n | Q >`. By default, the algebra is checked on associativity, but this can be avoided by setting `Check := false`. The returned algebra is of type `AlgAss`.

### `QuaternionAlgebra< K | a, b >: Rng, RngElt, RngElt -> AlgQuat`

This function creates the quaternion algebra $A$ over the field $K$ on generators $x$ and $y$ with relations $x^2 = a$, $y^2 = b$, and $xy = -yx$.

### `LieAlgebra< R, n | Q >: Rng, RngIntElt, SeqEnum -> AlgLie`

```magma
Check: BoolElt                    Default: true
```

This function creates the Lie structure constant algebra $A$ as returned by `Algebra< R, n | Q >`. By default, the algebra is checked to be a Lie algebra, but this can be avoided by setting `Check := false`. The returned algebra is of type `AlgLie`.

### `LieAlgebra(A): AlgAss -> AlgLie`

Given an associative algebra $A$, create the Lie algebra generated by the elements in $L$ using the induced Lie product $(x,y) \rightarrow x*y - y*x$.

### `GroupAlgebra(R, G): Rng, Grp -> AlgGrp`

Given a ring $R$ and a group $G$ construct the group algebra $R[G]$ of dimension $|G|$ over $R$.

### `MatrixAlgebra(R, n): Rng, RngInt -> AlgMat`

Given a positive integer $n$ and a ring $R$, create the full matrix algebra $M_n(R)$ of dimension $n^2$ over $R$.

## Construction of an Element of a General Algebra

The construction of a generic element of an algebra varies for the different types of algebras and is therefore explained in the corresponding chapters.

### `Zero(A): AlgGen -> AlgGenElt`

### `A ! 0: AlgGen, RngIntElt -> AlgGenElt`

Create the zero element of the algebra $A$.

### `One(A): AlgGen -> AlgGenElt`

### `A ! 1: AlgGen, RngIntElt -> AlgGenElt`

If it exists, create the identity element of the algebra $A$; otherwise an error occurs.

### `Random(A): AlgGen -> AlgGenElt`

Given an algebra $A$ defined over a finite ring, return a random element.
