# AlgebraPackage(R, A)¶

naalg.spad line 522 [edit on github]

AlgebraPackage assembles a variety of useful functions for general algebras.

- basis: Vector A -> Vector A if R has EuclideanDomain
`basis(va)`

selects a basis from the elements of`va`

.

- basisOfCenter: () -> List A
`basisOfCenter()`

returns a basis of the space of all`x`

of`A`

satisfying`commutator(x, a) = 0`

and`associator(x, a, b) = associator(a, x, b) = associator(a, b, x) = 0`

for all`a`

,`b`

in`A`

.

- basisOfCentroid: () -> List Matrix R
`basisOfCentroid()`

returns a basis of the centroid, i.e. the endomorphism ring of`A`

considered as`(A, A)`

-bimodule.

- basisOfCommutingElements: () -> List A
`basisOfCommutingElements()`

returns a basis of the space of all`x`

of`A`

satisfying`0 = commutator(x, a)`

for all`a`

in`A`

.

- basisOfLeftAnnihilator: A -> List A
`basisOfLeftAnnihilator(a)`

returns a basis of the space of all`x`

of`A`

satisfying`0 = x*a`

.

- basisOfLeftNucleus: () -> List A
`basisOfLeftNucleus()`

returns a basis of the space of all`x`

of`A`

satisfying`0 = associator(x, a, b)`

for all`a`

,`b`

in`A`

.

- basisOfLeftNucloid: () -> List Matrix R
`basisOfLeftNucloid()`

returns a basis of the space of endomorphisms of`A`

as right module. Note: left nucloid coincides with left nucleus if`A`

has a unit.

- basisOfMiddleNucleus: () -> List A
`basisOfMiddleNucleus()`

returns a basis of the space of all`x`

of`A`

satisfying`0 = associator(a, x, b)`

for all`a`

,`b`

in`A`

.

- basisOfNucleus: () -> List A
`basisOfNucleus()`

returns a basis of the space of all`x`

of`A`

satisfying`associator(x, a, b) = associator(a, x, b) = associator(a, b, x) = 0`

for all`a`

,`b`

in`A`

.

- basisOfRightAnnihilator: A -> List A
`basisOfRightAnnihilator(a)`

returns a basis of the space of all`x`

of`A`

satisfying`0 = a*x`

.

- basisOfRightNucleus: () -> List A
`basisOfRightNucleus()`

returns a basis of the space of all`x`

of`A`

satisfying`0 = associator(a, b, x)`

for all`a`

,`b`

in`A`

.

- basisOfRightNucloid: () -> List Matrix R
`basisOfRightNucloid()`

returns a basis of the space of endomorphisms of`A`

as left module. Note: right nucloid coincides with right nucleus if`A`

has a unit.

- biRank: A -> NonNegativeInteger
`biRank(x)`

determines the number of linearly independent elements in`x`

,`x*bi`

,`bi*x`

,`bi*x*bj`

,`i, j=1, ..., n`

, where`b=[b1, ..., bn]`

is a basis. Note: if`A`

has a unit, then doubleRank, weakBiRank and biRank coincide.

- doubleRank: A -> NonNegativeInteger
`doubleRank(x)`

determines the number of linearly independent elements in`b1*x`

, …,`x*bn`

, where`b=[b1, ..., bn]`

is a basis.

- leftRank: A -> NonNegativeInteger
`leftRank(x)`

determines the number of linearly independent elements in`x*b1`

, …,`x*bn`

, where`b=[b1, ..., bn]`

is a basis.

- radicalOfLeftTraceForm: () -> List A
`radicalOfLeftTraceForm()`

returns basis for null space of`leftTraceMatrix()`

, if the algebra is associative, alternative or a Jordan algebra, then this space equals the radical (maximal nil ideal) of the algebra.

- rightRank: A -> NonNegativeInteger
`rightRank(x)`

determines the number of linearly independent elements in`b1*x`

, …,`bn*x`

, where`b=[b1, ..., bn]`

is a basis.

- weakBiRank: A -> NonNegativeInteger
`weakBiRank(x)`

determines the number of linearly independent elements in the`bi*x*bj`

,`i, j=1, ..., n`

, where`b=[b1, ..., bn]`

is a basis.