GR-Algebras: Quotients of PBW-Algebras
In analogy to the affine algebras section in the commutative algebra chapter, we describe OSCAR functionality for dealing with quotients of PBW-algebras modulo two-sided ideals.
Quotients of PBW-algebras modulo two-sided ideals are also known as GR-algebras (here, GR stands for Gröbner-Ready; see [Lev05]).
Types
GR-algebras are modeled by objects of type PBWAlgQuo{T, S} <: NCRing, their elements are objects of type PBWAlgQuoElem{T, S} <: NCRingElem. Here, T is the element type of the field over which the GR-algebra is defined (the type S is added for internal use).
Constructors
quo — Methodquo(A::PBWAlgRing, I::PBWAlgIdeal)Given a two-sided ideal I of A, create the quotient algebra $A/I$ and return the new algebra together with the quotient map $A\to A/I$.
Examples
julia> R, (x, y, z) = QQ[:x, :y, :z];
julia> L = [-x*y, -x*z, -y*z];
julia> REL = strictly_upper_triangular_matrix(L);
julia> A, (x, y, z) = pbw_algebra(R, REL, deglex(gens(R)))
(PBW-algebra over rational field in x, y, z with relations y*x = -x*y, z*x = -x*z, z*y = -y*z, PBWAlgElem{QQFieldElem, Singular.n_Q}[x, y, z])
julia> I = two_sided_ideal(A, [x^2, y^2, z^2])
two_sided_ideal(x^2, y^2, z^2)
julia> Q, q = quo(A, I);
julia> Q
(PBW-algebra over rational field in x, y, z with relations y*x = -x*y, z*x = -x*z, z*y = -y*z)/two_sided_ideal(x^2, y^2, z^2)
julia> q
Map defined by a julia-function with inverse
from PBW-algebra over rational field in x, y, z with relations y*x = -x*y, z*x = -x*z, z*y = -y*z
to (PBW-algebra over rational field in x, y, z with relations y*x = -x*y, z*x = -x*z, z*y = -y*z)/two_sided_ideal(x^2, y^2, z^2)Exterior Algebras
The $n$-th exterior algebra over a field $K$ is the quotient of the PBW-algebra
\[A=K \langle e_1,\dots, e_n \mid e_i e_j = - e_j e_i \ \text { for }\ i\neq j\rangle\]
modulo the two-sided ideal
\[\langle e_1^2,\dots, e_n^2\rangle.\]
exterior_algebra — Methodexterior_algebra(K::Ring, nvars::Int)
exterior_algebra(K::Ring, varnames::AbstractVector{<:VarName})Given a coefficient ring K and variable names, say varnames = [:x1, :x2, ...], return a tuple E, [x1, x2, ...] consisting of the exterior algebra E over the polynomial ring R[x1, x2, ...] and its generators x1, x2, ....
If K is a field, this function will use a special implementation in Singular.
Creating an exterior_algebra with many variables will create an object occupying a lot of memory (probably cubic in nvars).
Examples
julia> E, (x1,x2) = exterior_algebra(QQ, 2);
julia> x2*x1
-x1*x2
julia> (x1+x2)^2 # over fields, result is automatically reduced!
0
julia> E, (x,y) = exterior_algebra(QQ, ["x","y"]);
julia> y*x
-x*yThis function is part of the experimental code in Oscar. Please read here for more details.
Data Associated to Affine GR-Algebras
Basic Data
If Q=A/I is the quotient ring of a PBW-algebra A modulo a two-sided ideal I of A, then
base_ring(Q)refers toA,modulus(Q)toI,gens(Q)to the generators ofQ,number_of_generators(Q)/ngens(Q)to the number of these generators, andgen(Q, i)as well asQ[i]to thei-th such generator.
Examples
julia> R, (x, y, z) = QQ[:x, :y, :z];
julia> L = [-x*y, -x*z, -y*z];
julia> REL = strictly_upper_triangular_matrix(L);
julia> A, (x, y, z) = pbw_algebra(R, REL, deglex(gens(R)));
julia> I = two_sided_ideal(A, [x^2, y^2, z^2]);
julia> Q, q = quo(A, I);
julia> base_ring(Q)
PBW-algebra over rational field in x, y, z with relations y*x = -x*y, z*x = -x*z, z*y = -y*z
julia> modulus(Q)
two_sided_ideal(x^2, y^2, z^2)
julia> gens(Q)
3-element Vector{PBWAlgQuoElem{QQFieldElem, Singular.n_Q}}:
x
y
z
julia> number_of_generators(Q)
3
julia> gen(Q, 2)
yElements of GR-Algebras
Types
The OSCAR type for elements of quotient rings of multivariate polynomial rings PBW-algebras is of parametrized form PBWAlgQuoElem{T, S}, where T is the element type of the field over which the GR-algebra is defined (the type S is added for internal use).
Creating Elements of GR-Algebras
Elements of a GR-algebra $Q = A/I$ are created as images of elements of $A$ under the projection map or by directly coercing elements of $A$ into $Q$. The function simplify reduces a given element with regard to the modulus $I$.
Examples
julia> R, (x, y, z) = QQ[:x, :y, :z];
julia> L = [-x*y, -x*z, -y*z];
julia> REL = strictly_upper_triangular_matrix(L);
julia> A, (x, y, z) = pbw_algebra(R, REL, deglex(gens(R)));
julia> I = two_sided_ideal(A, [x^2, y^2, z^2]);
julia> Q, q = quo(A, I);
julia> f = q(y*x+z^2)
-x*y + z^2
julia> typeof(f)
PBWAlgQuoElem{QQFieldElem, Singular.n_Q}
julia> simplify(f);
julia> f
-x*y
julia> g = Q(y*x+x^2)
x^2 - x*y
julia> f == g
trueData associated to Elements of GR-Algebras
Given an element f of an affine GR-algebra Q,
parent(f)refers toQ.