# example from class using Groebner bases # Question 1: does x+y lie in the ideal generated by # f1 = x^3*y-x*y^2+1 # f2 = x^2*y^2-y^3-1 sage: P = PolynomialRing(QQ,['x','y']) sage: (x,y)=P.gens() sage: f1 = x^3*y-x*y^2+1 sage: f2 = x^2*y^2-y^3-1 sage: P.ideal([f1,f2]).reduce(x+y) 0 # Computer says "yes" to Question 1 # Lets look at the Grobner basis: sage: P.ideal([f1,f2]).groebner_basis() [y^4 - y^3 - 1, x + y] # Question 2: How can we express x+y as an algebraic combination of the # generators f1 and f2? # Answer: reduce z(x+y) in the ideal z*f1 - z1, z*f2-z2 # where z, z1, z2 are all 'dummy' variables and x,y and z are all # higher weight than z1 and z2 sage: P = PolynomialRing(QQ,['x','y','z','z1','z2']) sage: (x,y,z,z1,z2)=P.gens() sage: f1 = x^3*y-x*y^2+1 sage: f2 = x^2*y^2-y^3-1 sage: P.ideal([z*f1-z1,z*f2-z2]).reduce(z*(x+y)) y*z1 - x*z2 # The computer says: x+y = y*f1 - x*f2 # Lets look at the Grobner basis: sage: P.ideal([z*f1-z1,z*f2-z2]).groebner_basis() [y^4*z + x*y^3*z1 - y^4*z1 - x^2*y^2*z2 + x*y^3*z2 - y^3*z - z - z2, x^2*y^2*z1 - x^3*y*z2 - y^3*z1 + x*y^2*z2 - z1 - z2, x*z + y*z - y*z1 + x*z2] # Consider a much more horrible calculation: # Given a list of polynomials: # g1 = x^2*y-x^3*y^2+2*x^2+y^2-1 # g2 = x*y-x^2+y^3-2 # g3 = x*y^2+x^3+y^3-x-1 # find what algebraic combination gives the polynomial: # x^6*y^7 - x^8*y^4 + x^7*y^5 - 2*x^5*y^6 + 2*x^7*y^3 - 4*x^6*y^4 - 4*x^5*y^5 \ # - 2*x^3*y^7 - x^9 + x^7*y^2 - 7*x^6*y^3 - x^5*y^4 - 7*x^4*y^5 - 4*x^3*y^6 - \ # 3*x^2*y^7 - 3*x*y^8 - y^9 - 2*x^6*y^2 + 5*x^5*y^3 + 3*x^4*y^4 + x^3*y^5 + \ # 2*x^2*y^6 + 3*x^7 - 4*x^6*y + 16*x^5*y^2 + 10*x^4*y^3 + 9*x^3*y^4 + 10*x^2*y^5 \ # + 3*x*y^6 + y^7 - x^6 + 5*x^5*y + x^4*y^2 + 10*x^3*y^3 + x^2*y^4 + 6*x*y^5 + \ # 2*y^6 - 7*x^4*y - 4*x^3*y^2 - 9*x^2*y^3 - y^5 - 10*x^4 - 5*x^3*y - 12*x^2*y^2 \ # - 7*x*y^3 - 2*y^4 - 4*x^3 + 4*x^2*y - 3*x*y^2 + 7*x^2 + 2*x*y + 3*y^2 + 2*x - 2 sage: P = PolynomialRing(QQ,['x','y','z1','z2','z3']) sage: (x,y,z1,z2,z3) = P.gens() sage: g1 = x^2*y-x^3*y^2+2*x^2+y^2-1 sage: g2 = x*y-x^2+y^3-2 sage: g3 = x*y^2+x^3+y^3-x-1 sage: f = x^6*y^7 - x^8*y^4 + x^7*y^5 - 2*x^5*y^6 + 2*x^7*y^3 - 4*x^6*y^4 - 4*x^5*y^5 - ....: 2*x^3*y^7 - x^9 + x^7*y^2 - 7*x^6*y^3 - x^5*y^4 - 7*x^4*y^5 - 4*x^3*y^6 - 3*x^2*y^ ....: 7 - 3*x*y^8 - y^9 - 2*x^6*y^2 + 5*x^5*y^3 + 3*x^4*y^4 + x^3*y^5 + 2*x^2*y^6 + 3*x^ ....: 7 - 4*x^6*y + 16*x^5*y^2 + 10*x^4*y^3 + 9*x^3*y^4 + 10*x^2*y^5 + 3*x*y^6 + y^7 - x ....: ^6 + 5*x^5*y + x^4*y^2 + 10*x^3*y^3 + x^2*y^4 + 6*x*y^5 + 2*y^6 - 7*x^4*y - 4*x^3* ....: y^2 - 9*x^2*y^3 - y^5 - 10*x^4 - 5*x^3*y - 12*x^2*y^2 - 7*x*y^3 - 2*y^4 - 4*x^3 + ....: 4*x^2*y - 3*x*y^2 + 7*x^2 + 2*x*y + 3*y^2 + 2*x - 2 sage: P.ideal([g1-z1,g2-z2,g3-z3]).reduce(f) z1^2*z2 - z3^3 + z1*z3 - z2*z3 # the computer says: f == g1^2*g2 - g3^3 + g1*g3 - g2*g3 # Lets check: sage: f == g1^2*g2 - g3^3 + g1*g3 - g2*g3 True