CurrentModule = Oscar
DocTestSetup = Oscar.doctestsetup()
In analogy to the [affine algebras](@ref affine_algebras) section in the [commutative algebra](@ref commutative_algebra) chapter, we describe OSCAR functionality for dealing with quotients of PBW-algebras modulo two-sided ideals.
!!! note Quotients of PBW-algebras modulo two-sided ideals are also known as GR-algebras (here, GR stands for Gröbner-Ready; see Lev05).
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).
quo(A::PBWAlgRing, I::PBWAlgIdeal)
The $n$-th exterior algebra over a field $K$ is the quotient of the PBW-algebra
modulo the two-sided ideal
exterior_algebra
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.
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)
y
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).
Elements of a GR-algebra simplify
reduces a given element
with regard to the modulus
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
true
Given an element f
of an affine GR-algebra Q
,
parent(f)
refers toQ
.