You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I will collect here some remarks on the Gröbner basics (std, liftstd, lift, syz, ...) in Singular's subsystem Plural. These remarks might be helpful for designing the interaction between the noncommutative ring interface in Oscar/AbstractAlgebra and Plural.
Whenever I say matrix below I mean a matrix or module in Singular/Plural. I think of what is called a module in Singular/Plural as a sparse, column-oriented data structure for matrices.
By design Plural's std command computes GB of left ideals/modules. I am happy to see that this is now explicitly stated in the documentation.
To understand this claim it suffices to look at the documentation of liftstd in Plural. The multiple occurrences of the transposition could be interpreted as follows:
Let A is an r x c matrix over the noncommutative ring R provided by Plural. Then liftstd (taking into account the multiple transpositions) takes A as input and returns:
its left GB matrix B, i.e., a GB of its rows which generate a left submodule of the free left module R^{1 x c} of row vectors.
a transformation matrix X such that X * A = B.
Currently, Plural does not take A as input but transpose(A) and returns transpose(B) and transpose(X) instead of B and X.
If the noncommutative algebra has no or at least no known involution then Plural has no way to compute GB of right ideals/modules. This is because the transposition trick that works for commutative rings allowing one to move from left to right modules and back does not work here since:
transpose(AB) is not equal to transpose(B) * transpose(A) over noncommutative rings.
The transpositions of input and output also affect the commands lift and syz. For the latter, this means, that Plural can a priori only compute the left kernel of the matrix A. In order to compute the right kernel the ring R has to have a known involution.
I will be updating/clarifying/augmenting this post upon request.
The text was updated successfully, but these errors were encountered:
I will collect here some remarks on the Gröbner basics (
std
,liftstd
,lift
,syz
, ...) inSingular
's subsystemPlural
. These remarks might be helpful for designing the interaction between the noncommutative ring interface inOscar/AbstractAlgebra
andPlural
.Whenever I say matrix below I mean a matrix or module in
Singular/Plural
. I think of what is called a module inSingular/Plural
as a sparse, column-oriented data structure for matrices.Plural
'sstd
command computes GB of left ideals/modules. I am happy to see that this is now explicitly stated in the documentation.To understand this claim it suffices to look at the documentation of
liftstd
inPlural
. The multiple occurrences of the transposition could be interpreted as follows:Let A is an r x c matrix over the noncommutative ring R provided by
Plural
. Thenliftstd
(taking into account the multiple transpositions) takes A as input and returns:Currently,
Plural
does not take A as input but transpose(A) and returns transpose(B) and transpose(X) instead of B and X.Plural
has no way to compute GB of right ideals/modules. This is because the transposition trick that works for commutative rings allowing one to move from left to right modules and back does not work here since:transpose(AB) is not equal to transpose(B) * transpose(A) over noncommutative rings.
lift
andsyz
. For the latter, this means, thatPlural
can a priori only compute the left kernel of the matrix A. In order to compute the right kernel the ring R has to have a known involution.I will be updating/clarifying/augmenting this post upon request.
The text was updated successfully, but these errors were encountered: