Basics
Creation of algebras
See the corresponding sections on structure constant algebras.
zero_algebra
— Methodzero_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
Basic properties
base_ring
— Methodbase_ring(A::AbstractAssociativeAlgebra) -> Field
Given a $K$-algebra $A$, return $K$.
basis
— Methodbasis(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.
Predicates
is_zero
— Methodis_zero(A::AbstractAssociativeAlgebra) -> Bool
Return whether $A$ is the zero algebra.
is_commutative
— Methodis_commutative(A::AbstractAssociativeAlgebra) -> Bool
Return whether $A$ is commutative.
Examples
julia> A = matrix_algebra(QQ, 2);
julia> is_commutative(A)
false
is_central
— Methodis_central(A::AbstractAssociativeAlgebra)
Return whether the $K$-algebra $A$ is central, that is, whether $K$ is the center of $A$.
Generators
gens
— Methodgens(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]
gens_with_data
— Methodgens_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 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])
true
Center
center
— Methodcenter(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
dimension_of_center
— Methoddimension_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
dimension_over_center
— Methoddimension_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