Basics

Creation of algebras

See the corresponding sections on structure constant algebras.

zero_algebraMethod
zero_algebra([T, ] K::Field) -> AbstractAssociativeAlgebra

Return the zero ring as an algebra over the field $K$.

The optional first argument determines the type of the algebra, and can be StructureConstantAlgebra (default) or MatrixAlgebra.

Examples

julia> A = zero_algebra(QQ)
Structure constant algebra of dimension 0 over QQ
source

Basic properties

base_ringMethod
base_ring(A::AbstractAssociativeAlgebra) -> Field

Given a $K$-algebra $A$, return $K$.

source
basisMethod
basis(A::AbstractAssociativeAlgebra) -> Vector

Given a $K$-algebra $A$ return the $K$-basis of $A$. See also coordinates to get the the coordinates of an element with respect to the bases.

source

Predicates

is_zeroMethod
is_zero(A::AbstractAssociativeAlgebra) -> Bool

Return whether $A$ is the zero algebra.

source
is_commutativeMethod
is_commutative(A::AbstractAssociativeAlgebra) -> Bool

Return whether $A$ is commutative.

Examples

julia> A = matrix_algebra(QQ, 2);

julia> is_commutative(A)
false
source
is_centralMethod
is_central(A::AbstractAssociativeAlgebra)

Return whether the $K$-algebra $A$ is central, that is, whether $K$ is the center of $A$.

source

Generators

gensMethod
gens(A::AbstractAssociativeAlgebra; thorough_search::Bool = false) -> Vector

Given a $K$-algebra $A$, return a subset of basis(A), which generates $A$ as an algebra over $K$.

If thorough_search is true, the number of returned generators is possibly smaller. This will in general increase the runtime. It is not guaranteed that the number of generators is minimal in any case.

The gens_with_data function computes additional data for expressing a basis as words in the generators.

Examples

julia> A = matrix_algebra(QQ, 3);

julia> gens(A; thorough_search = true)
5-element Vector{MatAlgebraElem{QQFieldElem, QQMatrix}}:
 [1 0 0; 0 0 0; 0 0 0]
 [0 0 0; 1 0 0; 0 0 0]
 [0 0 0; 0 0 0; 1 0 0]
 [0 1 0; 0 0 0; 0 0 0]
 [0 0 1; 0 0 0; 0 0 0]
source
gens_with_dataMethod
gens_with_data(A::AbstractAssociativeAlgebra; thorough_search::Bool = false)
                                                   -> Vector, Vector, Vector

Given a $K$-algebra $A$, return a triple $(G, B, w)$ consisting of

  • a subset $G$ of basis(A), which generates $A$ as an algebra over $K$,
  • a (new) basis $B$ and a vector w::Vector{Tuple{Int, Int}}, such that B[i] = prod(G[j]^k for (j, k) in w[i].

If thorough_search is true, the number of returned generators is possibly smaller. This will in general increase the runtime. It is not guaranteed that the number of generators is minimal in any case.

Examples

julia> A = matrix_algebra(QQ, 3);

julia> G, B, w = gens_with_data(A; thorough_search = true);

julia> B[1] == prod(G[i]^j for (i, j) in w[1])
true
source

Center

centerMethod
center(A::AbstractAssociativeAlgebra)
                                   -> StructureConstantAlgebra, Map

Returns the center $C$ of $A$ and the inclusion $C \to A$. Note that $C$ itself is an algebra.

Examples

julia> A = matrix_algebra(QQ, 2);

julia> C, CtoA = center(A);

julia> C
Structure constant algebra of dimension 1 over QQ
source
dimension_of_centerMethod
dimension_of_center(A::AbstractAssociativeAlgebra) -> Int

Given a $K$-algebra, return the $K$-dimension of the center of $A$.

Examples

julia> A = matrix_algebra(QQ, 2);

julia> dimension_of_center(A)
1
source
dimension_over_centerMethod
dimension_over_center(A::AbstractAssociativeAlgebra) -> Int

Given a simple $K$-algebra with center $C$, return the $C$-dimension $A$.

Examples

julia> A = matrix_algebra(QQ, 2);

julia> dimension_of_center(A)
1
source