I am trying to program a toy buchberger algorithm but got stuck.
import itertools
R.<x,y,z> = PolynomialRing(QQ, order="Degrevlex")
I=ideal(x^3-2*x*y+y^4,x^2*y-2*y^2+x);
def buchberger(G):
F = list(G.gens())
pairs=list(itertools.combinations(F, r=2)) # makes pairs of the polynomials
while pairs:
f,g = pairs.pop()
h = s_poly(f, g).reduce()
if h != 0:
pairs.append((f, h) for f in F)
F.append(h)
return F
It throws an error:
ValueError: too many values to unpack (expected 2)
At the line where I .pop the elements. Weird thing is that if I just run the commands:
pairs=[(x**2,x**3)]
f,g =pairs.pop()
I get f=x^2, g=x^3 as a result an no error message.
When pairs is empty it notifies me that I can't pop from an empty list.