Ask Your Question

Express Groebner basis in terms of original basis

asked 2020-04-01 03:07:39 +0200

hshackle gravatar image

Working with a polynomial ring $R$, if I have an ideal generated by a set of polynomials $f_i$ (taking two for concreteness), I can obtain a Groebner basis $g_j$ by the commands

I = R.ideal([f1, f2])
g = I.groebner_basis()

What I want to do is express the Groebner basis in terms of the original basis, i.e. $g_j = \sum_i a_{ij} f_i$. How can I accomplish this in Sage? My understanding is that such an expression is calculated implicitly when the Groebner basis is calculated, so perhaps it is possible to recover it directly from the algorithm.

edit retag flag offensive close merge delete

2 Answers

Sort by » oldest newest most voted

answered 2020-04-02 00:28:36 +0200

rburing gravatar image

updated 2020-04-02 12:42:43 +0200

The simplest way is to do it during the Gröbner basis computation, e.g. in Buchberger's algorithm. It's possible to implement this in a few lines in SageMath.

As an alternative you can use the lift method on a polynomial, passing it a list of generators or an ideal:

sage: R.<x,y> = QQ[] 
sage: f = x^2 - y^2
sage: f.lift(R.ideal([x, y]))
[x, -y]

Keep in mind that the solution is generally not unique due to the existence of syzygies between the generators.

edit flag offensive delete link more


Hi! May I ask how to implement it during groebner basis computation as you said? since in my case, the function .lift() took too much time...

jane gravatar imagejane ( 2022-10-20 18:50:45 +0200 )edit

answered 2020-04-01 17:47:59 +0200

nbruin gravatar image

I think the quick way for this is to carry around marker variables, say b1,b2 and then compute the groebner basis of the ideal (b1-f1,b2-f2), making sure you have a block order that prioritizes the original variables (that occur in f1,f2). You can then see in the resulting basis from the part of the polynomials in the b1,b2 how your original generators were combined. It's comparable to the trick of augmenting a matrix for Gaussian elimination to find the transformation that gets you there (i.e., the inverse of the matrix).

edit flag offensive delete link more


This is usable but not very convenient when you get e.g. b1^3 in the result; this is more suited for a subalgebra test.

rburing gravatar imagerburing ( 2020-04-02 00:37:01 +0200 )edit

It may not be convenient but it does exactly reflect what happens: to obtain that relation, you'd need to take f1^3 in terms of your original basis.

nbruin gravatar imagenbruin ( 2020-04-06 22:21:37 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2020-04-01 03:07:39 +0200

Seen: 420 times

Last updated: Apr 02 '20