Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gröbner bases in plural #233

Open
mohamed-barakat opened this issue May 13, 2020 · 2 comments
Open

Gröbner bases in plural #233

mohamed-barakat opened this issue May 13, 2020 · 2 comments

Comments

@mohamed-barakat
Copy link
Contributor

mohamed-barakat commented May 13, 2020

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.

  1. 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.

  1. 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.

  1. 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.

@fingolfin
Copy link
Member

@tthsqe12 are you aware of this issue with remarks regarding PLURAL? Now that you implemented access to Plural, it would be good to check these things

@tthsqe12
Copy link
Contributor

tthsqe12 commented Nov 9, 2021

I am well aware of this post and have the issues on my radar.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants