# Constructors for Lie Algebras

The construction of a Lie algebra defined by structure constants is identical to that of a general structure constant algebra. Most constructors take two optional parameters: `Check` and `Rep`.

By default, the conditions for the algebra to be a Lie algebra are checked. If the user decides to omit this check, by setting the parameter `Check` to `false`, and the algebra is not actually Lie then functions in this section will fail or give incorrect answers.

The optional parameter `Rep` can be used to select the internal representation of the structure constants. The possible values for `Rep` are “`Dense`”, “`Sparse`” and “`Partial`”, with the default being “`Dense`”. In the dense format, the $n^3$ structure constants are stored as $n^2$ vectors of length $n$. This is the best representation if most of the structure constants are non-zero. The sparse format, intended for use when most structure constants are zero, stores the positions and values of the non-zero structure constants. The partial format stores the vectors, but records for efficiency the positions of the non-zero structure constants.

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

## `LieAlgebra<M | Q : parameters >: ModTupRng, SeqEnum -> AlgLie`

```magma
Check: BoolElt                      Default: true
Rep  : MonStgElt                    Default: "Dense"
```

This function creates the Lie structure constant algebra $L$ over the free module $M = R^n$, with standard basis $\{e_1, e_2, \ldots, e_n\}$, and structure constants $a_{ij}^k$ being given by the sequence $Q$. The sequence $Q$ can be of any of the following three forms. Note that in all cases the actual ordering of the structure constants is the same: the only difference is that their partitioning into blocks varies.

**(i)**
A sequence of $n$ sequences of $n$ sequences of length $n$. The $j$-th element of the $i$-th sequence is the sequence $[ a_{ij}^1, \ldots, a_{ij}^n ]$, or the element $(a_{ij}^1, \ldots, a_{ij}^n)$ of $M$, giving the coefficients of the product $e_i * e_j$.

**(ii)**
A sequence of $n^2$ sequences of length $n$, or $n^2$ elements of $M$. Here the coefficients of $e_i * e_j$ are given by position $(i - 1)n + j$ of $Q$.

**(iii)**
A sequence of $n^3$ elements of the ring $R$. The sequence elements are the structure constants themselves, in the order $a_{11}^1, a_{11}^2, \ldots, a_{11}^n, a_{12}^1, a_{12}^2, \ldots, a_{nn}^n$. So $a_{ij}^k$ lies in position $(i - 1)n^2 + (j - 1)n + k$ of $Q$.

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

```magma
Check: BoolElt                      Default: true
Rep  : MonStgElt                    Default: "Dense"
```

This function creates the Lie structure constant algebra $L$ with standard basis $\{e_1, e_2, \ldots, e_n\}$ over the ring $R$. The sequence $T$ contains quadruples $< i, j, k, a_{ij}^k>$ giving the non-zero structure constants. All other structure constants are defined to be $0$.

## `LieAlgebra< t | T : parameters >: SeqEnum, SeqEnum -> AlgLie`

```magma
Check: BoolElt                      Default: true
Rep  : MonStgElt                    Default: "Dense"
```

This function creates the Lie structure constant algebra $L$ over the integers, with standard basis $\{e_1, e_2, \ldots, e_n\}$. The sequence $T$ contains quadruples $< i, j, k, a_{ij}^k>$ (where the $a_{ij}^k$ are integers) giving the non-zero structure constants. All other structure constants are defined to be $0$. The argument $t$ is a sequence of length $n$ consisting of nonnegative integers giving the moduli of the basis elements. Thus let $t_i$ denote the $i$-th element of $t$; then $t_ie_i =0$. So if $t_i=0$, then $ke_i \neq 0$ for all integers $k$.

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

Given an associative structure-constant algebra $A$, create the Lie algebra $L$ consisting of the elements in $A$ with the induced Lie product $(x,y) \rightarrow x*y - y*x$. As a second value the map identifying the elements of $L$ and $A$ is returned.

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

Given an associative matrix algebra $A$, create a structure-constant Lie algebra $L$ isomorphic to $A$ with the induced Lie product $(x,y) \rightarrow x*y - y*x$.

## `AbelianLieAlgebra(R, n): Rng, RngIntElt -> AlgLie`

```magma
Rep: MonStgElt                    Default: "Sparse"
```

Create the abelian Lie algebra of dimension $n$ over the ring $R$.

## `Example: Lie Algebra Cons (ex-b11bef)`

We construct the Heisenberg Lie algebra, then a Lie algebra from an associative algebra, and finally a Lie algebra over the integers (also called a Lie ring).

```magma
> T:= [ <1,2,3,1>, <2,1,3,-1> ];
> LieAlgebra< Rationals(), 3 | T >;
Lie Algebra of dimension 3 with base ring Rational Field
> A:= Algebra( GF(27), GF(3) );
> LieAlgebra(A);
Lie Algebra of dimension 3 with base ring GF(3)
> T:= [ <1,2,2,2>, <2,1,2,2> ];
> t:= [0,4];
> K:= LieAlgebra< t | T : Rep:= "Dense" >; K;
Lie Algebra of dimension 2 with base ring Integer Ring
Column moduli: [0, 4]
> LowerCentralSeries( K );
[
    Lie Algebra of dimension 2 with base ring Integer Ring
    Column moduli: [0, 4],
    Lie Algebra of dimension 1 with base ring Integer Ring
    Column moduli: [2],
    Lie Algebra of dimension 0 with base ring Integer Ring
]

```

## `ChangeBasis(L, B): AlgLie, {[AlgLieElt]} -> AlgLie`

## `ChangeBasis(L, B): AlgLie, {[ModTupFldElt]} -> AlgLie`

## `ChangeBasis(L, B): AlgLie, Mtrx -> AlgLie`

```magma
Rep: MonStgElt                    Default: "Dense"
```

Create a new Lie structure constant algebra $L'$, isomorphic to $L$, by recomputing the structure constants with respect to the basis $B$. The basis $B$ can be specified as a set or sequence of elements of $L$, a set or sequence of vectors, or a matrix. The second returned value is the isomorphism from $L$ to $L'$.

As above, the optional parameter `Rep` can be used to select the internal representation of the structure constants. Note that the default is dense representation, regardless of the representation used by $L$.

## `MatrixLieAlgebra(R, n): Rng, RngIntElt -> AlgMatLie`

Given a ring $R$ and an integer $n$, create the full Lie algebra of matrices of degree $d$ over $R$.

## `MatrixLieAlgebra(A): AlgMat -> AlgMatLie`

Given an associative matrix algebra $A$, create the matrix Lie algebra $L$ consisting of the elements in $A$ with the induced Lie product $(x,y) \rightarrow x*y - y*x$.

## `Algebra(M): AlgMatLie -> AlgLie, Map`

## `LieAlgebra(M): AlgMatLie -> AlgLie, Map`

Return a structure-constant Lie algebra isomorphic to the matrix Lie algebra $M$.

## `Example: Matrix Lie Algebra (ex-297c34)`

We construct the subalgebra of the matrix Lie algebra of $2\times 2$ matrices, consisting of upper triangular matrices.

```magma
> L:= MatrixLieAlgebra( Rationals(), 2 );
> a:= L!Matrix( [[1,0],[0,0]] );
> b:= L!Matrix( [[0,0],[1,0]] );
> c:= L!Matrix( [[0,0],[0,1]] );
> K:= sub< L | [ a, b, c ] >;
> Dimension(K);
3
> IsSolvable(K);
true
> IsNilpotent(K);
false

```
