Basics
Creation of algebras
See the corresponding sections on structure constant algebras, group algebras and quaternion algebras.
zero_algebra — Methodzero_algebra([T, ] K::Field) -> AbstractAssociativeAlgebraReturn 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 QQBasic properties
base_ring — Methodbase_ring(A::AbstractAssociativeAlgebra) -> FieldGiven a $K$-algebra $A$, return $K$.
basis — Methodbasis(A::AbstractAssociativeAlgebra) -> VectorGiven 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.
Predicates
is_zero — Methodis_zero(A::AbstractAssociativeAlgebra) -> BoolReturn whether $A$ is the zero algebra.
is_commutative — Methodis_commutative(A::AbstractAssociativeAlgebra) -> BoolReturn whether $A$ is commutative.
Examples
julia> A = matrix_algebra(QQ, 2);
julia> is_commutative(A)
falseis_central — Methodis_central(A::AbstractAssociativeAlgebra)Return whether the $K$-algebra $A$ is central, that is, whether $K$ is the center of $A$.
Creation of elements
Elements of algebras can be constructed by arithmetic with basis elements, generators or by providing coordinates.
julia> Q = quaternion_algebra(QQ, -1, -1)
Quaternion algebra
over rational field
defined by i^2 = -1, j^2 = -1
julia> B = basis(Q);
julia> x = B[1] + B[2] + 1//3 * B[4]
1 + i + 1//3*k
julia> Q([1, 1, 0, 1//3])
1 + i + 1//3*kGenerators
gens — Methodgens(A::AbstractAssociativeAlgebra; thorough_search::Bool = false) -> VectorGiven 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]gens_with_data — Methodgens_with_data(A::AbstractAssociativeAlgebra; thorough_search::Bool = false)
-> Vector, Vector, VectorGiven 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 thatB[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])
trueCenter
center — Methodcenter(A::AbstractAssociativeAlgebra)
-> StructureConstantAlgebra, MapReturns 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 QQdimension_of_center — Methoddimension_of_center(A::AbstractAssociativeAlgebra) -> IntGiven a $K$-algebra, return the $K$-dimension of the center of $A$.
Examples
julia> A = matrix_algebra(QQ, 2);
julia> dimension_of_center(A)
1dimension_over_center — Methoddimension_over_center(A::AbstractAssociativeAlgebra) -> IntGiven 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